Vue PDF文件预览vue-pdf

最近做项目,遇到预览PDF这个功能,在网上找了找,大多推荐的是pdf.js,不过在Vue中还是想偷懒直接npm组件,最后找到了一个还不错的Vue-pdf 组件,GitHub地址:https://github.com/FranckFreiburger/vue-pdf#readme

不过一般GitHub上的注释比较简洁,所以这里把自己实际使用的过程总结了一下,下面贴代码

本博客源码: https://github.com/shengbid/vue-demo 这个项目里会把平时博客写的一些功能的代码都放在里面,有需要可以下载看看,有帮助的话点个star哈

引用: npm install --save vue-pdf

template代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bh0RKIrm-1665987646306)(//common.cnblogs.com/images/copycode.gif)]

// 上一页

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pz09FEFn-1665987646307)(//common.cnblogs.com/images/copycode.gif)]

js代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mqlPGiBG-1665987646308)(//common.cnblogs.com/images/copycode.gif)]

import pdf from ‘vue-pdf’ export default {
components: {pdf},
data () { return {
currentPage: 0, // pdf文件页码
pageCount: 0, // pdf文件总页数
fileType: ‘pdf’, // 文件类型
     src: ‘’, // pdf文件地址
}
},
  created: {
    // 有时PDF文件地址会出现跨域的情况,这里最好处理一下
    this.src = pdf.createLoadingTask(this.src)

}
method: { // 改变PDF页码,val传过来区分上一页下一页的值,0上一页,1下一页
changePdfPage (val) { // console.log(val)
if (val === 0 && this.currentPage > 1) { this.currentPage–
// console.log(this.currentPage)
} if (val === 1 && this.currentPage < this.pageCount) { this.currentPage++
// console.log(this.currentPage)
}
}, // pdf加载时
loadPdfHandler (e) { this.currentPage = 1 // 加载的时候先加载第一页
}
}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hjXcBapr-1665987646309)(//common.cnblogs.com/images/copycode.gif)]

实际效果

问题补充: 文件打印乱码问题解决方法

之前有人问了关于PDF打印乱码问题,我自己试了确实有这个问题,在官网找了一下,有人提交了代码解决了这个问题,现在我把方法附上

原始的打印页面,PDF格式乱码,主要是因为PDF里使用了自定义字体,不能识别

需要修改vue-pdf安装包的pdfjsWrapper.js文件

上面后缀为1的文件是原始的,红线框起来的是我修改之后的文件

替换之后,打印就能正常显示了,

博客园貌似不能上传文件,代码太多就不放上来了,如果有需要可以找我邮箱发你,或者到官网自己修改文件

git-hup地址:https://github.com/FranckFreiburger/vue-pdf/pull/130/commits/253f6186ff0676abf9277786087dda8d95dd8ea7,

上面提供的解决文件打印乱码的问题,实现起来比较麻烦,而且现在vue-pdf的版本已经更新了,用这个方法可能还会出现空白页的问题.如果对项目没什么要求,可用用iframe来预览打印,效果会更好些,这里把方法放上来,有需要的可以试试

这里的例子是把PDF文件放在elment的弹框中,当然你可以根据你自己的适用场景来决定

html:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GzfDeD3y-1665987646312)(//common.cnblogs.com/images/copycode.gif)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gb9hpGqb-1665987646313)(//common.cnblogs.com/images/copycode.gif)]

js:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qi4FMowB-1665987646314)(//common.cnblogs.com/images/copycode.gif)]

data () { return {
src: '/static/file/中国互联网整体网民发展状况——《第31次中国互联网发展状况调查报告(上)》.pdf**', //pdf地址,这里我用的是我本地的文件,你也可以使用后台的文件

dialogVisible: true }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tIo5Q5TB-1665987646315)(//common.cnblogs.com/images/copycode.gif)]

效果展示:

打印效果:

补充内容:

朋友们,关于跨域问题,我这里说明一下,如果你是在本地localhost环境请求后台接口返回的文件地址,一般都会跨域,报错如下

这个文件地址我在浏览器可以直接打开预览

遇到这种问题,是因为你本地的localhost和你后台返回的域名不一致,可以先用一个本地静态文件调试效果,在线上环境即通过打包部署的环境(域名和返回的PDF域名一致的环境)再看效果.

另外补充一下打印的问题,通过vue-pdf自带的打印功能,打印出来的效果一般是这样

这个作者在git上也说了,现在vue-pdf的打印功能还在试验阶段,没有完善,所以寄希望于这个方法实现打印还需一段时日,上面的内容里我用了标签来预览打印,但是现在iframe已经不怎么使用了,有些项目还不允许用,这里我再补充两种打印方法

  1. 先把PDF内容转成图片后再打印

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C94moQmS-1665987646319)(//common.cnblogs.com/images/copycode.gif)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HTMH1dFr-1665987646319)(//common.cnblogs.com/images/copycode.gif)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EDMu7PIO-1665987646320)(//common.cnblogs.com/images/copycode.gif)]

Vue PDF文件预览打印vue-pdf相关推荐

  1. pdf文件预览、打印

    前端 pdf 文件预览的方式有多种. html元素:<iframe>.<embed> <iframe :src="pdfUrl " style=&qu ...

  2. 用vue-pdf包实现pdf文件预览,支持分页

    vue项目实现pdf文件预览功能 下载vue-pdf包 npm install --save vue-pdf template模板内容: //pdf组件 <pdf :src="pdfF ...

  3. vue+springboot文件预览

    一.下载OpenOffice 4 脚本之家下载地址:https://www.jb51.net/softs/595118.html 百度网盘: 链接:https://pan.baidu.com/s/1x ...

  4. Java使用openOffice转PDF以及PDF文件预览乱码问题

    Java使用openOffice转PDF以及PDF文件预览乱码问题 使用openOffice,支持doc, docx, .xls, .xlsx, .ppt, .pptx转pdf 一:依赖 <de ...

  5. java pdf文件下载_Java后台返回PDF文件预览下载

    Java后台返回PDF文件预览下载 开始的代码的系统代码为: ResponseEntity onePdf = s3Wrapper.download(contractEntity.getContract ...

  6. 手机端pdf文件预览pdf.js使用方法详解

    虽然H5页面可以通过A直接访问html 但可惜的是 手机端H5页面这样做就直接变下载了 那么想要实现手机端的pdf文件预览就需要用到pdf.js了 首先 我们访问地址 http://mozilla.g ...

  7. mpvue PDF文件预览

    小程序中PDF文件预览问题 在小程序中可以ios端可以使用  <web-view :src="url"></web-view> 但是在Android端pdf ...

  8. Vue PDF文件预览vue-pdf

    最近做项目,遇到预览PDF这个功能,在网上找了找,大多推荐的是pdf.js,不过在Vue中还是想偷懒直接npm组件,最后找到了一个还不错的Vue-pdf 组件,GitHub地址:https://git ...

  9. vue 项目中分别使用 vue-pdf 插件和内嵌 iframe 实现 PDF 文件预览,缩放,旋转,下载,保存等功能 ?

    需求:在 vue  和 element-ui 项目中,有点击按钮预览,下载,打印 PDF 文件 需求,要求支持 PDF 的预览,上下页切换,首尾页切换,页码选择跳转,放大缩小,顺时针逆时针旋转,下载, ...

最新文章

  1. Redis info参数总结
  2. 歪枣网数据库设计-千万级别海量数据查询效率优化
  3. (132)FPGA面试题-Verilog实现格雷码转二进制
  4. 笨办法学 Python · 续 练习 22:后缀数组
  5. 不止操作系统,智能手机才更需要开源!
  6. asp.net Ajax表单提交 二种方式数据处理 asp.net
  7. rabbitmq消息持久化,避免异常情况下,消息会丢失
  8. Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本
  9. 手把手写一个vue3的组件
  10. 《DOOM启世录(纪念版) 》此书出了纪念版,好像内容没变
  11. 计算机科学的研究方法,计算机科学与技术课题研究的方法论
  12. 认清性能问题,性能问题深入探究----性能之「道」
  13. Standford Moss。图形用户页面接口,代码查重
  14. 在网页中打开展示pdf文件
  15. LQ0187 猜年龄【填空题】
  16. 高通(Qualcomm)LK源码深度分析(三)
  17. 济南市高新技术企业认定补助
  18. 有没有开源的虚拟路由器?有,VPP了解一下
  19. 认知升级|系列2|复利思维
  20. Web应用多账号系统设计及微信扫码登录实现

热门文章

  1. CISCO ASA5520 与SMTP问题
  2. 乐之邦07mp或08mp固件下载及说明书
  3. “大玩家”登场,暴风TV的AI版图再下一城
  4. simpleJson处理api返回数据结构不确定的情况
  5. 浙江大学工程师学院非全日制定向工程管理【125601】招生问答
  6. 生成随机小数的函数python_哪个选项是random库中用于生成随机小数的函数?
  7. cmd提示 'node' 不是内部或外部命令,也不是可运行的程序
  8. 机器人bl虐心_【原创】林先生主受 虐受 机器人攻
  9. springioc注解详解
  10. 安装haxm时遇到的三种报错及解决措施