gpt4 book ai didi

javascript - 如何在React中引用pdf.js库?

转载 作者:行者123 更新时间:2023-12-03 14:25:09 25 4
gpt4 key购买 nike

我正在尝试引用 PDF.js (由 Mozilla 提供)进入我的 React 项目。但是,它抛出“意外的标识符”错误。

我已将 PDF.js 放在公共(public)文件夹中,并在我的 index.html 中引用它。

文件结构:

public
- index.html
- pdftojs
- parsejs.js // < parseFile method in this file will be called
- pdf-parse.js
- misc..
src
- pdftotext
- parsepdf.js // < page to parse PDF

pdf-parse.js

var PDFJS = null
function render_page(pageData) { ... } // Untouched
async function PDF(...) { ... } // Untouched

exports.pdf = PDF; // Changed this line

原始库中的 parsejs.js:

8    import pdf from 'pdf-parse.js';
9 const pdfjsLib = require('pdfjs-dist'); // 'require' is undefined too so I don't know what is the correct way
10
11 function parseFile(file) {

...
45 }

此文件在第 8 行抛出意外标识符

解析 PDF 页面 (parsepdf.js)

  process(file) {
parseFile(file); // calling method in parsejs.js
...
}

给出'parseFile'未定义

最佳答案

我今天花了太多时间来拼凑这个问题的其他答案的片段。所以这是一个完整的答案。

首先安装 pdfjs-dist:

npm install pdfjs-dist

以下是如何在实际查看器组件中使用它:

import React, { useEffect, useState, useRef, useCallback } from 'react';
import pdfjsLib from "pdfjs-dist/build/pdf";
import pdfjsWorker from "pdfjs-dist/build/pdf.worker.entry";

export default function PdfViewer({url}){
const canvasRef = useRef();
pdfjsLib.GlobalWorkerOptions.workerSrc = pdfjsWorker;

const [pdfRef, setPdfRef] = useState();
const [currentPage, setCurrentPage] = useState(1);

const renderPage = useCallback((pageNum, pdf=pdfRef) => {
pdf && pdf.getPage(pageNum).then(function(page) {
const viewport = page.getViewport({scale: 1.5});
const canvas = canvasRef.current;
canvas.height = viewport.height;
canvas.width = viewport.width;
const renderContext = {
canvasContext: canvas.getContext('2d'),
viewport: viewport
};
page.render(renderContext);
});
}, [pdfRef]);

useEffect(() => {
renderPage(currentPage, pdfRef);
}, [pdfRef, currentPage, renderPage]);

useEffect(() => {
const loadingTask = pdfjsLib.getDocument(url);
loadingTask.promise.then(loadedPdf => {
setPdfRef(loadedPdf);
}, function (reason) {
console.error(reason);
});
}, [url]);

const nextPage = () => pdfRef && currentPage < pdfRef.numPages && setCurrentPage(currentPage + 1);

const prevPage = () => currentPage > 1 && setCurrentPage(currentPage - 1);

return <canvas ref={canvasRef}></canvas>;
}

关于javascript - 如何在React中引用pdf.js库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55371402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com