Pdf.js: PDFJS.getDocumentが機能しない

作成日 2014年12月31日  ·  12コメント  ·  ソース: mozilla/pdf.js

ローカルホスト(pdf.jsとローカルファイルシステムに問題があることはわかっています)でgrailsアプリを実行していて、ファイルを使用する代わりに、失敗することがわかっているurl:型付きJavaScript配列を渡しています。まだ失敗しています。 正確には、「警告:偽のワーカーを設定する」以外は何も教えてくれません。 そしてそれは何もしません。

this.base64ToBinary = function(dataURI) {
        var BASE64_MARKER = ';base64,';
        var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
        var base64 = dataURI.substring(base64Index);
        var raw = window.atob(base64);
        var rawLength = raw.length;
        var array = new Uint8Array(new ArrayBuffer(rawLength));

        for(i = 0; i < rawLength; i++) {
        array[i] = raw.charCodeAt(i);
        }
        return array;
    };

PDFJS.disableWorker = true; // due to CORS

// I convert some base64 data to binary data here which comes back correctly
var data = utilities.base64ToBinary(result);

PDFJS.getDocument(data).then(function (pdf) {
         //nothing console logs or reaches here
         console.log(pdf);
}).catch(function(error){
//no error message is logged either
            console.log("Error occurred", error);
        });

正しく設定されていないのではないかと思います。 pdf.jsを含めるだけで、このライブラリをクライアント側で純粋に使用できますか、それともviewer.jsも含める必要がありますか? また、互換性ファイルに気づきました...セットアップはあまり明確ではなく、この例http://jsfiddle.net/epistemex/LUNaJ/は機能しますが、私の例は機能せず、違いがわかりません。 また、その例で提供されているURLを使用すると、同じことを示します。

screen shot 2014-12-31 at 11 59 17 am

1-other 4-information-requested

最も参考になるコメント

「pdf.jsの名前が変更された場合、または結合されたファイルの一部である場合、これは役に立ちません。」 本当ですが、グライルを使用する私自身の問題は別として、標準的な方法をより正確にするために、とにかくそれらをループする必要があります。 穴だらけです。

全てのコメント12件

私はこの問題をより包括的にし、いくつかの更新を行いました。何か光を当てることができるかどうか教えてください。 エラー関数にもヒットするものはなく、コンソールに表示されるのはスクリーンショットに表示されているものだけです。

完全な例を確認し、問題をローカルで再現する方法が得られるまで、私たちは助けることができません。 https://github.com/mozilla/pdf.js/blob/master/CONTRIBUTING.mdを読み、要求に応じて詳細情報を提供してください。

@yurydelendikどうすればフィドルの例は機能しますが、まったく同じコードが私の環境では機能しません...したがって、再現できません...私が考えることができる最高のものはそれです私はあなたに見せるためにあなたと一緒にグーグルハングアウトやスクリーンヒーローをすることができます。

少なくともいくつかの可能性を教えていただけますか?

(経験から)推測するだけ:

  • 従来のwebkit/javascriptエンジン(これは通常、compatibility.jsを追加することで修正されます)
  • 古いPDF.jsバージョン(リリースされたバージョンまたはnpm / bower pdfjs-distを使用してください)
  • disableWorker/workerSrcの設定が間違っています
  • 問題レポーター/開発者の単純な間違い

pdf.worker.jsとは何ですか?

最新のリリースを使用しています。 また、disableWorker / workerSrcに関するドキュメントはありますか?

pdf.worker.jsは、PDF解析を実行するメインファイルです(ページ外のメインスレッド)。 disableWorker = trueの場合、(workerSrcの場所から)メインページに自動的に読み込まれ、PDF解析のニーズに合わせてUIをブロックします。 https://github.com/mozilla/pdf.js/blob/master/src/display/api.js#L65を参照してください

ああ、わかりました。問題が何であるかを理解しました...おそらく、ドキュメントにこれを書き留めるか、明確にする必要があります。 したがって、workerSrcを指定しない場合は、アプリケーションのヘッドにある最後のスクリプトタグを使用してそれを理解しようとしますが、アプリがグレイルであるか、結合されたファイルuriを提供する場合はどうなりますか? また、最後のスクリプトタグに正しいソースがあると確実に想定することはできません。 これを正しい方法で実行したい場合は、ヘッド内のすべてのスクリプトタグをループして、各srcでpdf.jsを探し、最後のソースを取得する代わりに正しいソースを使用する必要があります。

個人的には、グライルについては何も知りません。 これらの場合に合わせてworkerSrcを構成できます。

すべてのスクリプトタグをループする必要があります

pdf.jsの名前が変更された場合、または結合されたファイルの一部である場合、これは役に立ちません。

無効として閉じる。

「pdf.jsの名前が変更された場合、または結合されたファイルの一部である場合、これは役に立ちません。」 本当ですが、グライルを使用する私自身の問題は別として、標準的な方法をより正確にするために、とにかくそれらをループする必要があります。 穴だらけです。

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