pdfjs的使用

需求:在浏览器中直接打开PDF文件预览,或是,打开本地PDF预览。

 

问题:本来后端返回一个服务器地址就可以直接window.open()打开PDF。但是返回的是二进制流。

还有,处于安全性考虑,在项目中是无法打开本地(如:D/)中的文件的。

首要任务:

下载PDFjs;但是,最新的插件使用的是es6语法有浏览器兼容性问题,不兼容QQ浏览器、跟别说IE 了。所以 请认准es5版的 pdf.js-2.5.207;

插件下载地址:链接:https://pan.baidu.com/s/1uUGFuPJ_RXZx3lnQKr-M_g 
提取码:ph0n

1.将插件放入项目

h5项目:(随便找个地儿放就好)

vue项目:

2.使用 

通过:插件中 web/viewer.html 打开PDF,所以一定要找对文件夹。

本地文件预览:(既然打不开磁盘中的文件,那么就转为流的方式打开)

<body>
<input type="file" id="myfile">
<script>
  // 本地文件预览
  window.onload=function (){
    const myfile = document.getElementById("myfile");
    myfile.addEventListener("change",function(){
      const file = this.files[0];   //文件流数据
      const url = URL.createObjectURL(file);   //将文件转为路径
      // ./pdf/web/viewer.html 一定找对文件夹
      window.open("./pdf/web/viewer.html?file="+url+"&.pdf");
    })
  }
</script>
</body>

服务器返回数据流方式预览:

  const blob = new Blob([data], {   //data 服务器返回的二进制数据流
        type: "application/pdf"
      });
      const url = URL.createObjectURL(blob);   //将文件转为路径
      // ./pdf/web/viewer.html 一定找对文件夹
      window.open("./pdf/web/viewer.html?file="+url+"&.pdf");

对了,"viewer.html ?file=..." 后面拼接 &.pdf ,是因为,有时候在打开PDF的情况下,刷新页面会报错。

效果图:

3. 隐藏PDF界面某个功能按钮

比如下载、打印按钮:

在viewer.html 页面找到对应HTML代码,注释掉;

 在viewer.js  文件中,注释掉相应js

因为只注释html代码,很可能报错;

 注释掉下载和打印的效果图:

未注释的效果图:

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PDF.js是一个用于在Web上呈现PDF文档的JavaScript库。你可以使用pdfjs-dist来引入并使用该库。下面是一些基本的使用步骤: 1. 首先,下载pdfjs-dist库。你可以从PDF.js的官方GitHub仓库中获取最新版本的库文件:https://github.com/mozilla/pdf.js/releases 2. 解压缩下载的文件,你将会看到一个名为`pdfjs-dist`的文件夹。 3. 将`pdfjs-dist`文件夹中的`build`文件夹复制到你的项目中。 4. 在你的HTML文件中引入`pdf.js`和`pdf.worker.js`这两个脚本文件。你可以使用以下代码片段: ```html <script src="path/to/pdf.js"></script> <script src="path/to/pdf.worker.js"></script> ``` 请确保将`path/to/`替换为实际的文件路径。 5. 创建一个用于呈现PDF文档的容器元素。例如,你可以在HTML中添加一个带有id属性的div元素: ```html <div id="pdfContainer"></div> ``` 6. 使用JavaScript代码加载并呈现PDF文档。你可以使用以下代码示例: ```javascript // 获取用于呈现PDF的容器元素 const container = document.getElementById('pdfContainer'); // 使用PDF.js加载PDF文档 PDFJS.getDocument('path/to/pdf/document.pdf').promise.then(pdf => { // 获取第一页 pdf.getPage(1).then(page => { // 创建一个canvas元素来显示页面内容 const canvas = document.createElement('canvas'); container.appendChild(canvas); // 设置canvas的尺寸 const viewport = page.getViewport({ scale: 1 }); canvas.width = viewport.width; canvas.height = viewport.height; // 将页面呈现到canvas上 const renderContext = { canvasContext: canvas.getContext('2d'), viewport: viewport }; page.render(renderContext); }); }); ``` 确保将`path/to/pdf/document.pdf`替换为实际的PDF文档路径。 这只是一个简单的示例,你可以根据自己的需求进行进一步的定制和扩展。你可以在PDF.js的官方文档中找到更多关于使用pdfjs-dist的信息:https://mozilla.github.io/pdf.js/

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值