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)