Pdf.js: 使用电子运行 pdf.js

创建于 2016-03-30  ·  4评论  ·  资料来源: mozilla/pdf.js

你好,
我正在尝试将 pdf.js 库与电子应用程序集成。 这样做的主要原因是在应用程序中有一个 pdf 查看器并打印文档。

首先,我尝试通过两种方式集成库:

  1. 在单独的目录中克隆 pdf.js 并运行 _gulp generic_ 以及我在构建目录下获得的任何内容,我复制到我的项目中的 src 目录。
  2. 通过从这里在我的项目中包含节点模块: https :

我有以下问题:

  • 按照第一条路线,我可以通过以下代码在我的 html 页面的画布中显示(基本上呈现)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 列表来执行某些常见任务(例如我正在尝试的任务)会很好。 抱歉,如果它已经存在并且我找不到它。

  • 按照第二条路线,我能够包含节点模块; 但我在这里担心的是,随着该项目的更新,它不会经常更新。 上次发布是一年前。 那里又没有 API 了。 所以,我暂时放弃了这个计划。

如果有人能在这里帮助我,我将不胜感激。

提前致谢...

配置:

  • 网络浏览器及其版本:Electron
  • 操作系统及其版本:OSX 10.10.5
  • PDF.js 版本:0.8.0
1-other

最有用的评论

查看 pdf.js 文件或 PDFJS.version 属性

它说版本:1.4.174

另外,我想出了问题。 我从通用目录中复制了正确的东西; 但是,当我打开一个带有 viewer.html url 的窗口时; window 属性应该是这样的:

webPreferences: { nodeIntegration: false }

它现在可以正常加载。

感谢您的帮助尤里!

所有4条评论

PDF.js 版本:0.8.0

真的是老版本了我们发布的预构建版本(或gulp generic一个)应该可以正常工作,但您可以自己将 pdf 加载到 Uint8Array 中。

PDFJS.getDocument 不是函数

这表明未加载核心 PDF.js 库('./build/pdf.js' 文件)。

package.json 仍然显示 0.8.0。

package.json 不包含构建的库版本,请参阅 pdf.js 文件或 PDFJS.version 属性以获取正确的版本号。

如果我指错了,你能告诉我吗?

两者应相同。 您必须使用整个“generic/”文件夹,因此您将在正确的位置拥有 pdf.js。

查看 pdf.js 文件或 PDFJS.version 属性

它说版本:1.4.174

另外,我想出了问题。 我从通用目录中复制了正确的东西; 但是,当我打开一个带有 viewer.html url 的窗口时; window 属性应该是这样的:

webPreferences: { nodeIntegration: false }

它现在可以正常加载。

感谢您的帮助尤里!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

jigskpatel picture jigskpatel  ·  3评论

THausherr picture THausherr  ·  3评论

AlexP3 picture AlexP3  ·  3评论

liuzhen2008 picture liuzhen2008  ·  4评论

sujit-baniya picture sujit-baniya  ·  3评论