你好,
我正在尝试将 pdf.js 库与电子应用程序集成。 这样做的主要原因是在应用程序中有一个 pdf 查看器并打印文档。
首先,我尝试通过两种方式集成库:
我有以下问题:
</div>
<canvas id="theCanvas"></canvas>
<div>
PDFJS.getDocument(pdfPath).then(function getPdfHelloWorld(pdf) {
pdf.getPage(1).then(function getPageHelloWorld(page) {
var scale = 1.5;
var viewport = page.getViewport(scale);
var canvas = document.getElementById('theCanvas');
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
var renderContext = {
canvasContext: context,
viewport: viewport
};
page.render(renderContext);
});
});
然而,这只是我想要的一部分。 我想要viewer.html 中的查看器控件。 所以,我尝试直接用 viewer.html 打开一个新窗口,如下所示:
var pdfPath = __dirname + '/pdfs/trial.pdf';
mainWindow.loadURL('file://' + __dirname + '/generic/web/viewer.html?file=' + pdfPath);
我能够看到查看器,但是在加载 pdf 文件时,它会在控制台中引发此错误:
Uncaught (in promise) TypeError: PDFJS.getDocument is not a function
在 Object.pdfViewOpen作为打开
在 webViewerInitialized (file:///.../src/generic/web/viewer.js:7686:26)
我无法弄清楚我在这里做错了什么。 这是推荐的方式吗? 另外,如果我想将整个查看器嵌入到某个画布或某个 iframe 中,我该怎么做? 在项目中有一个 API 列表来执行某些常见任务(例如我正在尝试的任务)会很好。 抱歉,如果它已经存在并且我找不到它。
如果有人能在这里帮助我,我将不胜感激。
提前致谢...
配置:
PDF.js 版本:0.8.0
真的是老版本了我们发布的预构建版本(或gulp generic
一个)应该可以正常工作,但您可以自己将 pdf 加载到 Uint8Array 中。
PDFJS.getDocument 不是函数
这表明未加载核心 PDF.js 库('./build/pdf.js' 文件)。
感谢您及时回复尤里。
真的是老版本了
我不知道我是怎么得到那个旧版本的。 除了git clone git://github.com/mozilla/pdf.js.git
,我没有做任何特别的事情来获得该项目。 但是,如果我在这里看到, package.json 仍然显示 0.8.0。
已经从我们的版本(或 gulp 通用版本)中预先构建的版本应该可以正常工作,但您可以自己将 pdf 加载到 Uint8Array 中。
这表明未加载核心 PDF.js 库('./build/pdf.js' 文件)。
在做了 gulp generic 之后,我在两个地方得到了 pdf.js 和 pdf.worker.js。 一个在 generic 目录之外,一个在 generic/build/ 目录内。 我目前指的是外面的那个。 如果我指错了,你能告诉我吗?
再次感谢您的帮助!
package.json 仍然显示 0.8.0。
package.json 不包含构建的库版本,请参阅 pdf.js 文件或 PDFJS.version 属性以获取正确的版本号。
如果我指错了,你能告诉我吗?
两者应相同。 您必须使用整个“generic/”文件夹,因此您将在正确的位置拥有 pdf.js。
查看 pdf.js 文件或 PDFJS.version 属性
另外,我想出了问题。 我从通用目录中复制了正确的东西; 但是,当我打开一个带有 viewer.html url 的窗口时; window 属性应该是这样的:
webPreferences: {
nodeIntegration: false
}
它现在可以正常加载。
感谢您的帮助尤里!
最有用的评论
它说版本:1.4.174
另外,我想出了问题。 我从通用目录中复制了正确的东西; 但是,当我打开一个带有 viewer.html url 的窗口时; window 属性应该是这样的:
webPreferences: { nodeIntegration: false }
它现在可以正常加载。
感谢您的帮助尤里!