Skip to content

Instantly share code, notes, and snippets.

@sr2ds
Created November 6, 2020 18:21
Show Gist options
  • Save sr2ds/ec2dca1b65581b2db1d6afd2f4815d74 to your computer and use it in GitHub Desktop.
Save sr2ds/ec2dca1b65581b2db1d6afd2f4815d74 to your computer and use it in GitHub Desktop.
A simple PDF Thumbnail Component Viewer for VueJs
<template>
<div>
<div class="row">
<div class="col-sm-4">
<a :href="fileUrl">
<canvas :id="_uid" />
</a>
</div>
</div>
</div>
</template>
<script>
// npm install pdfjs-dist
import * as pdfjsLib from 'pdfjs-dist/es5/build/pdf.js'
pdfjsLib.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjsLib.version}/pdf.worker.js`
export default {
name: 'PdfThumbnail',
props: {
fileUrl: {
type: String,
},
width: {
type: Number,
default: 200,
},
height: {
type: Number,
default: 200,
},
},
mounted() {
this.renderThumbnails()
},
methods: {
async renderThumbnails() {
console.log(this._uid)
const worker = new pdfjsLib.PDFWorker()
let pdf = await pdfjsLib
.getDocument({ url: this.fileUrl, worker: worker })
.promise.then((pdf) => pdf)
const page = await pdf.getPage(1)
let viewport = page.getViewport({ scale: 1.0 })
viewport = page.getViewport({ scale: this.width / viewport.width })
let canvas = document.getElementById(this._uid)
canvas.height = viewport.height
canvas.width = viewport.width
const context = canvas.getContext('2d')
await page.render({ canvasContext: context, viewport: viewport })
},
},
}
</script>
<style>
</style>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment