Pdf.js: 電子でpdf.jsを実行する

作成日 2016年03月30日  ·  4コメント  ·  ソース: mozilla/pdf.js

こんにちは、
pdf.jsライブラリをelectronアプリと統合しようとしています。 その背後にある主な理由は、アプリにPDFビューアを用意し、ドキュメントを印刷することです。

まず、2つの方法でライブラリを統合しようとしました。

  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は関数ではありません
Object.pdfViewOpenでopenとして
webViewerInitializedで(file:///.../src/generic/web/viewer.js:7686:26)

ここで何が間違っているのか理解できません。 これは推奨される方法ですか? また、そのビューア全体をキャンバスまたはiframeに埋め込みたい場合、どうすればよいですか? 私が試しているような特定の一般的なタスクを実行するために、プロジェクトにAPIリストがあると便利です。 申し訳ありませんが、すでにそこにあり、私がそれを見つけることができない場合。

  • 2番目のルートに従って、ノードモジュールを含めることができました。 しかし、私がここで懸念しているのは、このプロジェクトが更新されるため、頻繁に更新されないことです。 最後のリリースは1年前でした。 そして、APIは再びありませんでした。 それで、私は今のところ計画をやめました。

誰かがここで私を助けてくれれば幸いです。

前もって感謝します...

構成:

  • Webブラウザとそのバージョン:Electron
  • オペレーティングシステムとそのバージョン:OSX 10.10.5
  • PDF.jsバージョン:0.8.0
1-other

最も参考になるコメント

pdf.jsファイルまたはPDFJS.versionプロパティを参照してください

バージョン:1.4.174と書かれています

また、私は問題を理解しました。 汎用ディレクトリから適切なものをコピーしました。 ただし、viewer.htmlURLでウィンドウを開くと; 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.htmlURLでウィンドウを開くと; windowプロパティには次のものが必要です。

webPreferences: { nodeIntegration: false }

そして、それは今うまくロードすることができます。

ユーリーの助けをありがとう!

このページは役に立ちましたか?
0 / 5 - 0 評価