在页面内载入PDF(pdf.js)

npm i pdfjs-dist@2.0.943

这个版本调试没问题,新版语法和结构产生了变化

import PDFJS from 'pdfjs-dist';
import { TextLayerBuilder } from 'pdfjs-dist/web/pdf_viewer';
import 'pdfjs-dist/web/pdf_viewer.css';


var url = 'https://pan.banklaw.com.cn/banklaw/2024/02/28/RQS5PY6GJNTp3cekdP1709089136094.pdf?auth_key=1709107743-0-0-c7879f508fccf99ce9dc3c087d5459df';
PDFJS.GlobalWorkerOptions.workerSrc = 'pdfjs-dist/build/pdf.worker.js';



var container, pageDiv, pdfDoc;

      function getPDF(url) {
          PDFJS.getDocument(url).then((pdf) => {
              pdfDoc = pdf;
              container = document.getElementById('container2');
              for (var i = 1; i<= 2; i++) {
                // for (var i = 1; i<= pdf.numPages; i++) {
                  renderPDF(i);
              }
          })
      }



function renderPDF(num) {
        pdfDoc.getPage(num).then((page) => {
              var scale = 1.5;
              var viewport = page.getViewport(scale);
              pageDiv = document.createElement('div');
              pageDiv.setAttribute('id', 'page-' + (page.pageIndex + 1));
              pageDiv.setAttribute('style', 'position: relative');
              container.appendChild(pageDiv);
              var canvas = document.createElement('canvas');
              pageDiv.appendChild(canvas);
              var context = canvas.getContext('2d');
              canvas.height = viewport.height;
              canvas.width = viewport.width;
              
              var renderContext = {
                  canvasContext: context,
                  viewport: viewport
              };
              
              // page.render(renderContext);
              // 以下写法将会使内容可以复制
              page.render(renderContext).then(() => {
                return page.getTextContent();
              }).then((textContent) => {
                  // 创建文本图层div
                  const textLayerDiv = document.createElement('div');
                  textLayerDiv.setAttribute('class', 'textLayer');
                  // 将文本图层div添加至每页pdf的div中
                  pageDiv.appendChild(textLayerDiv);
                  
                  // 创建新的TextLayerBuilder实例
                  var textLayer = new TextLayerBuilder({
                      textLayerDiv: textLayerDiv,
                      pageIndex: page.pageIndex,
                      viewport: viewport
                  });
                  
                  textLayer.setTextContent(textContent);
                  
                  textLayer.render();
              });
          });
      }
getPDF(url)

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值