<template>
  <div>
    <embed :src="pdfUrl" type="application/pdf" width="100%" height="600px" />
  </div>
</template>
<script>
import pdfjsLib from 'pdfjs-dist'

export default {
  data() {
    return {
      pdfUrl: 'https://example.com/sample.pdf'
    }
  },
  mounted() {
    this.loadPdf()
  },
  methods: {
    async loadPdf() {
      const pdf = await pdfjsLib.getDocument(this.pdfUrl).promise
      const page = await pdf.getPage(1)
      const viewport = page.getViewport({ scale: 1.5 })
      const canvas = document.createElement('canvas')
      const canvasContext = canvas.getContext('2d')
      canvas.height = viewport.height
      canvas.width = viewport.width
      const renderContext = {
        canvasContext,
        viewport
      }
      await page.render(renderContext).promise
      const pdfDataUri = canvas.toDataURL('image/png')
      this.pdfUrl = pdfDataUri
    }
  }
}
</script>
<p>在上面的代码中,我们首先导入 pdf.js 库。在 mounted() 挂载钩子中,我们调用 loadPdf() 方法来加载 PDF 文件。在 loadPdf() 方法中,我们首先使用 pdfjsLib.getDocument() 方法来获取 PDF 文件。然后,我们使用 getPage() 方法来获取第一页。接下来,我们使用 getViewport() 方法来获取页面的视口,并使用 HTML5 Canvas 来创建一个画布,然后使用 render() 方法将页面渲染到画布上。最后,我们将渲染后的画布转换为数据 URL,并将其设置为 pdfUrl 属性,以便在模板中显示 PDF 文件。</p>
Vue 3 PDF 预览:使用 pdf.js 库实现

原文地址: https://www.cveoy.top/t/topic/ncKq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录