|
|
@@ -4,33 +4,51 @@
|
|
|
|
|
|
<script>
|
|
|
import pdfjs from '@/utils/pdf'
|
|
|
+import downloadFile from '@/utils/download-base64'
|
|
|
|
|
|
export default {
|
|
|
props: ['src', 'page'],
|
|
|
mounted () {
|
|
|
- const canvas = document.getElementById('pdf-canvas')
|
|
|
- const context = canvas.getContext('2d')
|
|
|
+ this._canvas = document.getElementById('pdf-canvas')
|
|
|
+ this._context = this._canvas.getContext('2d')
|
|
|
|
|
|
// Default size
|
|
|
- canvas.height = 1080
|
|
|
- canvas.width = 1920
|
|
|
+ this._canvas.height = 1080
|
|
|
+ this._canvas.width = 1920
|
|
|
|
|
|
const loadingTask = pdfjs.getDocument(this.src)
|
|
|
loadingTask.promise.then(pdf => {
|
|
|
- pdf.getPage(this.page ? this.page : 1).then(page => {
|
|
|
+ this._pdf = pdf
|
|
|
+ this.showPage()
|
|
|
+ })
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ page (newPage) {
|
|
|
+ this.showPage()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ showPage() {
|
|
|
+ this._pdf.getPage(this.page ? this.page : 1).then(page => {
|
|
|
const scale = 2
|
|
|
const viewport = page.getViewport({ scale: scale })
|
|
|
|
|
|
- canvas.height = viewport.height
|
|
|
- canvas.width = viewport.width
|
|
|
+ this._canvas.height = viewport.height
|
|
|
+ this._canvas.width = viewport.width
|
|
|
|
|
|
const renderContext = {
|
|
|
- canvasContext: context,
|
|
|
+ canvasContext: this._context,
|
|
|
viewport: viewport
|
|
|
}
|
|
|
page.render(renderContext)
|
|
|
+ }).catch(() => {
|
|
|
+ // todo 超出页码
|
|
|
})
|
|
|
- })
|
|
|
+ },
|
|
|
+ getScreenShot () {
|
|
|
+ const img = this._canvas.toDataURL('image/png')
|
|
|
+ downloadFile(img, '课程课件截图.png')
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
@@ -66,7 +84,7 @@ canvas {
|
|
|
canvas {
|
|
|
max-width: 100vw;
|
|
|
min-width: unset;
|
|
|
- max-height: 50vh;
|
|
|
+ max-height: 80vh;
|
|
|
}
|
|
|
}
|
|
|
|