ブラウザプラグインなしでPDFファイルを表示したいGWTフレームワーク上に構築されたアプリケーションがあり、現在それを行うためにPDF.jsを評価しています。問題は、私が何をしても、GWT アプリケーションのキャンバスに PDF ファイルをレンダリングできないことです。背景を教えてください
- PDF ファイルのチケットがサーバーから取得されます。
PDF.js ファイル チケットはサーバーから取得され、このスクリプトを使用して HTML 本文に埋め込まれます。
var head= document.getElementsByTagName('body')[0]; var script= document.createElement('script'); script.type= 'text/javascript'; script.setAttribute('charset', 'UTF-8'); script.src=url; head.appendChild(script);
Canvas 要素がビューで作成され (ここでは googles MVP パターンを使用)、スクリプトに対して JSNI 呼び出しが行われ、上記の関数を使用して HTML 本文に PDF.js が埋め込まれます。次に、スクリプトは、PDF.js ファイルで定義された PDFJS クラスで動作する関数を呼び出します。
キャンバスに PDF ファイルをレンダリングする関数は次のとおりです。
PDFJS.disableWorker = true; PDFJS.getDocument(url).then(function getPdfHelloWorld(pdf) { pdf.getPage(1).then(function getPageHelloWorld(page) { var scale = 1.25; var viewport = page.getViewport(scale); canvas.height = viewport.height; canvas.width = viewport.width; page.render({canvasContext: context, viewport: viewport}); page.startRendering(context); alert("Finished rendering"); }); });
キャンバスとコンテキストは View クラスで作成され、javascript に渡されます。
ここでの問題は、JSNI への呼び出しが行われた後、すべての変数のアラートを表示することです。ブラウザは、電話アラート(PDFJS)を発信するとき以外はアラートを表示します。これは、PDFJS 変数がスクリプトで認識されていないことを示しています。これにより、PDF.js ファイルがビューに正しく埋め込まれていないか、何か不足していると思われます。
注: 私はほとんどの例をネット経由でダウンロードしましたが、それらのほとんどはローカルで動作します。つまり、PDF.js ファイル パスを変更してローカル コピーを取得でき、HTML は引き続き PDF をレンダリングします。PDFJS 変数の読み取りに問題はありません。これらの問題が見られるのは、この GWT アプリケーションだけです。
誰でも何が起こっているのか手がかりを持っていますか。あなたの助けは非常に高く評価されます。
ありがとう