vue 项目中实现pdf预览 pdf打印 pdf下载

这篇具有很好参考价值的文章主要介绍了vue 项目中实现pdf预览 pdf打印 pdf下载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Vue项目中实现PDF预览、打印和下载可以通过以下步骤来实现:

  1. 安装pdf.js
    • pdf.js是一个JavaScript库,可以用于在Web上渲染PDF文件。
    • 可以使用npm安装pdf.js,命令如下:npm install pdfjs-dist --save
  2. 创建一个PDF组件
    • 在Vue项目中,可以创建一个PDF组件,用于显示PDF文件。
    • 可以使用pdf.js提供的API来渲染PDF文件。
    • 在组件的模板中添加一个canvas元素,用于显示PDF页面。
<template>
  <div>
    <canvas ref="pdfCanvas"></canvas>
  </div>
</template>
  • 在组件的脚本中,通过pdf.js加载PDF文件,并将其渲染到canvas元素中。
<script>
  import pdfjsLib from 'pdfjs-dist'

  export default {
    name: 'PdfViewer',
    props: {
      url: {
        type: String,
        required: true
      }
    },
    mounted () {
      pdfjsLib.getDocument(this.url).promise.then(pdf => {
        pdf.getPage(1).then(page => {
          const canvas = this.$refs.pdfCanvas
          const context = canvas.getContext('2d')
          const viewport = page.getViewport({ scale: 1 })

          canvas.height = viewport.height
          canvas.width = viewport.width

          page.render({
            canvasContext: context,
            viewport: viewport
          })
        })
      })
    }
  }
</script>

   3. 实现PDF打印      

        1.在PDF组件中添加一个按钮,用于触发打印操作。

        2.在按钮的点击事件中,调用浏览器的打印功能。

<template>
  <div>
    <canvas ref="pdfCanvas"></canvas>
    <button @click="print">Print</button>
  </div>
</template>

<script>
  import pdfjsLib from 'pdfjs-dist'

  export default {
    name: 'PdfViewer',
    props: {
      url: {
        type: String,
        required: true
      }
    },
    methods: {
      print () {
        const canvas = this.$refs.pdfCanvas
        const url = canvas.toDataURL('image/png')

        const win = window.open()
        win.document.write('<img src="' + url + '">')
        win.print()
        win.close()
      }
    },
    mounted () {
      pdfjsLib.getDocument(this.url).promise.then(pdf => {
        pdf.getPage(1).then(page => {
          const canvas = this.$refs.pdfCanvas
          const context = canvas.getContext('2d')
          const viewport = page.getViewport({ scale: 1 })

          canvas.height = viewport.height
          canvas.width = viewport.width

          page.render({
            canvasContext: context,
            viewport: viewport
          })
        })
      })
    }
  }
</script>

        4. 实现PDF下载

                1.在PDF组件中添加一个按钮,用于触发下载操作

                2. 在按钮的点击事件中,使用pdf.js提供的API将PDF文件转换为Blob对象,并使用 URL.createObjectURL()方法创建一个URL对象,然后将其赋值给一个a元素的href属性,最后触发a元素的点击事件文章来源地址https://www.toymoban.com/news/detail-547126.html

<template>
  <div>
    <canvas ref="pdfCanvas"></canvas>
    <button @click="print">Print</button>
    <button @click="download">Download</button>
  </div>
</template>

<script>
import pdfjsLib from 'pdfjs-dist'

export default {
  name: 'PdfViewer',
  props: {
    url: {
      type: String,
      required: true
    }
  },
  methods: {
    print () {
      const canvas = this.$refs.pdfCanvas
      const url = canvas.toDataURL('image/png')

      const win = window.open()
      win.document.write('<img src="' + url + '">')
      win.print()
      win.close()
    },
    download () {
      pdfjsLib.getDocument(this.url).promise.then(pdf => {
        pdf.getData().then(data => {
          const blob = new Blob([data], { type: 'application/pdf' })
          const url = URL.createObjectURL(blob)
          const a = document.createElement('a')
          a.href = url
          a.download = 'document.pdf'
        })
      }
      )
    }
  }
}

到了这里,关于vue 项目中实现pdf预览 pdf打印 pdf下载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue中使用pdf.js实现在线预览pdf文件流

    以下是在Vue中使用pdf.js实现在线预览pdf文件流的步骤: 在需要使用的组件中,使用以下代码引入pdf.js: 使用pdf.js的 getDocument() 方法加载pdf文件流。可以将文件流作为Blob对象传递给该方法。例如,可以使用axios从服务器获取pdf文件流: 在 loadPdf() 方法中,使用 getDocument() 方法

    2024年02月09日
    浏览(46)
  • vue+pdf.js预览本地pdf文件(可以复制文本,滚动页码展示)

    1、安装pdfjs-dist插件,推荐使用2.0.943这个版本 2、页面中引入使用 3、页面标签 3、解析pdf,获取pdf所有页数据,使用canvas渲染,并使用TextLayerBuilder创建文本层,可以复制文本信息 在渲染pdf数据时,当pdf文件很大渲染量很多时,会导致页面卡住,无法执行其他操作;这涉及到

    2024年01月21日
    浏览(37)
  • vue 纯前端预览pdf,纯前端实现pdf加水印下载文件也带水印,防止pdf下载

      原理:主要是利用pdfh5这个插件来完成的   使用方法:   1.页面需要有一个容器例子:div id=\\\"demo\\\"/div   2.下载pdfh5插件 npm install pdfh5   (注意:webpack5之后不会下载polyfill 需要手动下载 所以引入pdfh5的时候会报错)   解决方案:下载 node-polyfill-webpack-plugin npm install node-polyfill-

    2024年04月15日
    浏览(41)
  • 无需任何三方库,在 Next.js 项目在线预览 PDF 文件

    之前在使用Vue和其它框架的时候,预览 PDF 都是使用的 PDFObject 这个库,步骤是:下载依赖,然后手动封装一个 PDF 预览组件,这个组件接收本地或在线的pdf地址,然后在页面中使用组件的车时候,通过路由参数去获取目标PDF地址。 最近使用 Next.js 重构公司官网的时候,也碰到

    2024年01月21日
    浏览(36)
  • 前端使用vue-pdf、pdf-lib、canvas 给PDF文件添加水印,并预览与下载

    原理就是给显示pdf 的容器增加一层水印遮罩层 下载: 通过url获取pdf文件的arrarybuffer文件流 将arraybuffer数据转成pdf文档 添加水印字体(内置/自定义) 为每页pdf添加文字水印 保存pdf文件的unit64Arrary文件流 预览: 创建canvas容器(用于显示水印文字) 创建水印canvas 将水印canv

    2024年01月24日
    浏览(47)
  • 前端(vue)js在线预览PDF、Word、Excel、ppt等office文件

    可选参数 pdf=true,word文档尝试以pdf方式显示,默认false watermark=水印文本,显示文本水印;“img:”+图片url表示图片水印,如:img:https://view.xdocin.com/demo/wm.png saveable=true,是否允许保存源文件,默认false printable=false,是否允许打印,默认true ©able=false,是否允许选择复制内容,

    2024年02月13日
    浏览(54)
  • vue项目用后端返回的文件流实现docx和pdf文件预览

    写这篇文章的目的,是因为我比较懒,想把代码记录一下,方便日后使用;哈哈,如果你也需要,也可以复制粘贴啊,为了方便自己和需要的人知道怎么使用,我尽量写的详细一点,没有什么技术难点,就是简单的记录,万一能帮到需要的人呢,也是一件美事; 其实也就是使

    2023年04月20日
    浏览(40)
  • Vue3预览并打印PDF的两种方法

    项目场景:后台接口请求数据,返回PDF文档的链接(即pdf文件在服务器上的存放路径),在vue3页面可预览和打印该PDF。 在之前的Vue2项目中,预览并打印PDF用的是vue-pdf这个插件,但在vue3中是不支持的,只能换个插件了,于是经过测试,也踩了一些坑,总结了以下两种方法:

    2023年04月18日
    浏览(26)
  • 【PDF.js】PDF文件预览

    使用PDFJS实现pdf文件的预览,支持预览指定页、搜索、缩略图、页面尺寸调整等等。 官方地址 文档地址 下载地址 将下载的压缩包解压并放入到项目中的public文件夹下,我这里下载的是pdfjs-4.0.379-dist版本,如下 在 pdfjs-4.0.379-dist/web/viewer.mjs 内搜索 throw new Error(“file or

    2024年04月11日
    浏览(45)
  • pdf.js预览pdf文件

    预览pdf一般通过浏览器自带的pdf预览器就可以,但有时候需要窗口预览或自定义操作,可以使用pdf.js操作 pdf.js需要构建后使用,我们可以直接下载安装pdfjs-dist,这是构建好的版本 这里注意你的环境,新版本使用了可选链,空值合并和私有 class 字段/方法等,如果你的浏览器

    2024年02月03日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包