使用pdfh5⭐⭐⭐⭐⭐
-
安装:
npm install pdfh5npm install canvas@2.11.2 npm install dommatrix@1.0.3 npm install web-streams-polyfill@3.2.1最新版本1.4.7引入需要额外安装一些依赖包,否则运行时可能会报错
-
使用
<template> <div id="demo"></div> </template> <script> import Pdfh5 from "pdfh5"; import "pdfh5/css/pdfh5.css"; export default { data() { return { pdfh5: null, }; }, mounted() { this.pdfh5 = new Pdfh5("#demo", { pdfurl: "可以是本地文件路径、http地址、接口请求返回的文件流", // responseType: "blob" // blob arraybuffer }); //监听完成事件 this.pdfh5.on("complete", function (status, msg, time) { console.log( "状态:" + status + ",信息:" + msg + ",耗时:" + time + "毫秒,总页数:" + this.totalNum ); //禁止手势缩放 this.pdfh5.zoomEnable(false); }); }, }; </script>pdf文件流或者buffer已经得到:
new Pdfh5('#demo', { data: blob, //blob arraybuffer }); -
文档地址:pdfh5
使用vue-pdf-app⭐⭐⭐⭐
- 安装(我安装的版本是2.1.0)
npm install vue-pdf-app npm install vue-pdf-app@2.1.0 //安装指定版本 - 使用
<template> <div> <VuePdfApp :pdf="url" :config="config" @pages-rendered="pagesRendered" ></VuePdfApp> </div> </template> <script> import VuePdfApp from "vue-pdf-app"; export default { data() { return { url: null, config: { toolbar: false, }, }; }, components: { VuePdfApp, }, methods: { pagesRendered(v) { console.log(v); }, }, }; </script> - 文档地址:vue-pdf-app
使用vue-pdf-embed⭐⭐⭐
移动端大文件滑动查看过快会存在自动刷新页面问题
- 安装
npm install vue-pdf-embed - 使用
<template> <div> <div class="loading-wrap" v-if="!loaded"> <van-loading type="spinner" size="24px" /> </div> <vue-pdf-embed :image-resources-path="annotationIconsPath" :source="source1" @loaded="loadFinish" /> </div> </template> <script> import VuePdfEmbed from "vue-pdf-embed/dist/vue2-pdf-embed"; import { Loading } from 'vant'; export default { data() { source1:'/test.pdf', loaded:false }, components: { VuePdfEmbed, 'van-loading':Loading }, methods: { loadFinish() { console.log('load finish'); this.loaded=true } }, } </script> <style lang="less"> .vue-pdf-embed { margin: auto; max-width: 480px; & > div { margin-bottom: 4px; box-shadow: 0 2px 8px 4px rgba(0, 0, 0, 0.1); } } .loading-wrap { position: fixed; top: 0; left: 0; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; background: rgba(255, 255, 255, 0.8); } </style> - 文档地址:vue-pdf-embed