当前位置:   article > 正文

vue 预览 pdf pdf.js 的具体使用

vue 预览 pdf pdf.js 的具体使用

1、下载依赖

npm  install pdfjs-dist@2.2.228

2、在需要用的页面引入

  1. <script>
  2. import * as PDFJS from 'pdfjs-dist';
  3. export default{
  4. data(){
  5. return{
  6. }
  7. },
  8. created(){
  9. PDFJS.GlobalWorkerOptions.workerSrc = require('pdfjs-dist/build/pdf.worker.min.js')
  10. },
  11. mounted(){
  12. this.hanle()
  13. }
  14. }
  15. </script>

3、其它都在methods

  1. //pdf 创建画布
  2. createPdfContainer(id,className) {
  3. var pdfContainer = document.getElementById('pdf-container');
  4. var canvasNew =document.createElement('canvas');
  5. canvasNew.id = id;
  6. canvasNew.className = className;
  7. pdfContainer.appendChild(canvasNew);
  8. this.loadings = false
  9. },
  10. // 渲染pdf 给pdf定宽度
  11. renderPDF(pdf,i,id) {
  12. pdf.getPage(i).then(function(page) {
  13. var scale = 1.67;
  14. var viewport = page.getViewport(scale);
  15. //
  16. // 准备用于渲染的 canvas 元素
  17. //
  18. var canvas = document.getElementById(id);
  19. var context = canvas.getContext('2d');
  20. canvas.height = viewport.height;
  21. canvas.width = viewport.width;
  22. //
  23. // 将 PDF 页面渲染到 canvas 上下文中
  24. //
  25. var renderContext = {
  26. canvasContext: context,
  27. viewport: viewport
  28. };
  29. page.render(renderContext);
  30. });
  31. },
  32. //创建和pdf页数等同的canvas数
  33. createSeriesCanvas(num,template) {
  34. const _this = this
  35. var id = '';
  36. for(var j = 1; j <= num; j++){
  37. id = template + j;
  38. _this.createPdfContainer(id,'pdfClass');
  39. }
  40. },
  41. hanle() {
  42. const _this= this
  43. _this.loadings = true
  44. //如果pdf加密了 就用下面的obj
  45. let obj = {
  46. url:_this.dataurl,
  47. password:'你的密码'
  48. }
  49. //如果pdf没有加密 就路径就好
  50. let obj = {
  51. url:_this.dataurl
  52. }
  53. PDFJS.getDocument(obj).then(function(pdf) {
  54. //用 promise 获取页面
  55. var id = '';
  56. var idTemplate = 'cw-pdf-';
  57. var pageNum = pdf.numPages;
  58. //根据页码创建画布
  59. _this.createSeriesCanvas(pageNum,idTemplate);
  60. //将pdf渲染到画布上去
  61. for (var i = 1; i <= pageNum; i++) {
  62. id = idTemplate + i;
  63. _this.renderPDF(pdf,i,id);
  64. }
  65. });
  66. },

4、页面

  1. <div class="left" ref="content">
  2. <div ref="pdfViewer" id="pdf-container" class="pdfView" v-loading="loadings"></div>
  3. </div>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/529619
推荐阅读
相关标签
  

闽ICP备14008679号