Pdf.js: システムフォントを使用するPDFの読み込み中にエラーが発生しました

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

テストファイル: https ://dl.dropboxusercontent.com/u/16283445/PORTRAIT.pdf

ファイルはMuhimbiPDFコンバーターによって作成されました。

メインテキスト(埋め込まれたTahomaフォントを使用)は問題なくレンダリングされます。 エラーの原因となるのは、ファイルの先頭にある試用メッセージです。 デバッグの結果、このメッセージはシステムのHelveticaフォントを参照しており、エラー時にそのグリフが欠落していることがわかりました。

エラーログ:

Error: Requesting object that isn't resolved yet Helvetica_path_T pdf.js:205
    at error (http://[skipped]/pdfjs/pdf.js:207:15)
    at Object.PDFObjects_get [as get] (http://[skipped]/pdfjs/pdf.js:4640:9)
    at Object.FontFace.getPathGenerator (http://[skipped]/pdfjs/pdf.js:7675:23)
    at Object.CanvasGraphics.paintChar (http://[skipped]/pdfjs/pdf.js:6105:26)
    at Object.CanvasGraphics_showText [as showText] (http://[skipped]/pdfjs/pdf.js:6291:18)
    at Object.CanvasGraphics_nextLineShowText [as nextLineShowText] (http://[skipped]/pdfjs/pdf.js:6381:12)
    at Object.CanvasGraphics_executeOperatorList [as executeOperatorList] (http://[skipped]/pdfjs/pdf.js:5600:22)
    at Object.InternalRenderTask__next [as _next] (http://[skipped]/pdfjs/pdf.js:4807:39)
    at Object.pdfViewcContinueCallback [as continueCallback] (http://[skipped]/pdfjs/viewer.js:4261:9)
3-pdf-broken 4-font-conversion

最も参考になるコメント

pdfjs-dist": "^2.2.2を設定してdisableFontFace: falseを使用すると、この問題が修正されました。

pdfjs.getDocument( { url: pdfUrl, disableFontFace: false, }

全てのコメント27件

font_loader.js#L313でフォントをフェッチしようとしたときにフォントがロードされないため、これは失敗します。
この場合、 font.dataが未定義であるため、 evaluator.js#L284を指定すると、実際にはまったくロードされないという問題があるようです。 これは、問題のフォントにフォントファイルが埋め込まれていないためです。つまり、fonts.jsでは、 font.dataを定義する前に戻ります。 fonts.js#L2256およびfonts.js# L2303を参照してください。
これが実際には大きな問題ではない理由は、フォントリソースがXObject辞書などに含まれているPDF(この問題のように)にのみ影響するように見えるためです。

現在のコードではフォントファイルなしでfont.dataを作成するのは難しいように思われるため、残念ながらこの問題にどのように対処できるかわかりません。 おそらく、PDF.jsに標準フォントを埋め込んだ場合、これは「無料」で解決されるでしょうか。

PSこの問題を修正すると、http://bthorben.github.io/pdfRepo/#crashedにリストされているファイルの1つ(または2つ)が解決されることにも気づきました。

これらのいずれかのような解決策はありますか?

1-デフォルトのフォントまたは正確なファイルにすでに使用されているフォントの使用を許可するオプション
2-このアイテムのレンダリングをスキップできるようにするオプション
これは、一部のフォントが存在しない場合にpdfファイルでの作業を続行するのに役立ち、重大なエラーとしてではなく、警告としてのみ出力されます。

どう思いますか?

最初のオプションをお勧めしますが、まだフォントを埋め込んでおらず、一部の機能のフォントをシステムに含めることに依存しています。 適切にスタブする方法を見つけたら、間違いなく無視できます(これらのフォントの場合、要求に応じて空の文字のアウトラインを生成できます)

より良い解決策が見つかるまですべてを停止するのではなく、少なくともこのエラーを.catch(...)する可能性を開きます。残念ながら、この問題は私たちのライブ環境の機能を壊します...悪いです。

利用可能な回避策はありますか? または、 @ xwcgによって提案されたある種のエラーキャッチメカニズム?

複製はここに提出されました: https ://bugzilla.mozilla.org/show_bug.cgi?id = 1463728

こんにちは、みんな、
同じエラーが発生しました。
正式な修正の前に、この問題の一時的な回避策があるかどうかを知ることができますか?

これに関する更新はありますか?、2014年以降、まだ解決されていません

@ diego-lipinski-de-castro参考までに、ignoreErrors:trueをgetDocument関数に渡すと、#9809マージでこれが修正されました。 npm pdfjs-distを使用する場合、まだ更新されていません。 フォントについて不平を言っていたソースとPDFからビルドしたところ、キャンバス出力で正しく処理されるようになりました。 すべてが順調に見えます。

@sirisian更新していただきありがとうございます。 リリースを楽しみにしています

@sirisian npm pdfjs-distのアップデートがいつになるか知っていますか? npmの回避策がある場合はどうなりますか?
ありがとう

npm pdfjs-distのこの修正リリースに関する更新はありますか?

こんにちは、私もこのエラーが発生します。 システムに存在しないフォントをデフォルトのフォントに置き換える方法はありますか?

こんにちは@ timvandermeijpdfjs -distでこの修正が見られるのはいつですか?

pdfjs-dist": "^2.2.2を設定してdisableFontFace: falseを使用すると、この問題が修正されました。

pdfjs.getDocument( { url: pdfUrl, disableFontFace: false, }

私の意見では、pdf.jsが特定のフォントのテキストの読み込みに失敗した場合は、レンダリングを停止するのではなく、表示できる代替フォント(たとえば、ユーザーがフォント設定で設定したデフォルトのフォント)を使用して同じテキストを読み込む必要があります。ページとエラーをスローします。 これは、Firefox 61以前で、[上記の選択ではなく、ページが独自のフォントを選択できるようにする]オプションが無効になっている場合の動作でした。 私の意見では、テキストを代替フォントで表示する方が、何も表示しないよりも優れています。

pdfjs-dist": "^2.2.2を設定してdisableFontFace: falseを使用すると、この問題が修正されました。

pdfjs.getDocument( { url: pdfUrl, disableFontFace: false, }

これは私の問題を解決しました、私はpdfjs-dist ^ 2.0.943を使用しています
ありがとう

IE 11が要件であり、セキュリティ設定(ITチームによって管理されている)でカスタムフォントのダウンロードが許可されていないプロジェクトに取り組んでいます。 これにより、PDFレンダリングが生成され、レンダリング時にほとんど空白になり、いくつかの見出しと斜体の文字のみが表示されます。

disableFontFace: trueを設定すると、IE 11(および実際には他のすべてのブラウザー)で逆になります。 その後、ほとんどのフォントがレンダリングされますが、次のような一連のエラーが発生します。

Warning: getPathGenerator - ignoring character: "Error: Requesting object that isn't resolved yet Times_path_i.".

エラーはすべて、メッセージのTimes_path_*部分に異なる文字が含まれていることを示しています。 ドキュメントはほとんどのコンテンツをロードしますが、見出し、斜体、およびその他のバリエーションが視覚的に欠落しています(ただし、上部の透明なテキストレイヤーにより、空のテキストを選択できます)

そのため、IE 11のこの管理対象バージョン(管理者がフォントに関するセキュリティ設定を強制したため)を除くすべてのブラウザーでフルフォントレンダリングを使用するか、IE 11の修正を実装しようとしたために、どこでも半壊れたフォントレンダリングを使用することに固執しています。

助言がありますか?

そのニュースはありますか?

こんにちはチーム、
私は可能な限りすべてを試しましたが、バグを解決することはできません。
更新はありますか?

これは私たちにとって大きな影響です。 disableFontFace = falseを設定するための回避策はなぜですか? 私の理解では、disableFontFace = trueを使用すると、PDFに埋め込まれているフォントが何であるか(または含まれていないか)は関係ありません。 それは間違っていますか?

そのニュースはありますか?

6年前、 @ AllSeeingEyeで問題が発生していましたが、現在、このライブラリには594の未解決の問題があります。 誰もこのバグについてaf *を与えませんか? 私にとっては問題のバグですが、おそらくpdf-libのような他のライブラリを探す必要があります。

みなさん、良い一日を!

disableFontFaceパラメータでテキストレイヤーのレンダリングの問題を解決しようとしたときに、いくつかの同様の問題に直面しました。

disableFontFace: falseでは、一部のドキュメントは次のようになります。
image

disableFontFace: trueでは前のドキュメントはうまくレンダリングされますが、別のドキュメントには問題があります。
image

これらのセルはすべて空ではありませんでした。
一部のドキュメントは1つの方法でうまくレンダリングされ、一部のドキュメントは別の方法でレンダリングされます。
どのように行動すればよいですか?

@Hatgorと同様の問題が発生しています
これを正しく行うために実行できる修正または何かがありますか? 上記の解決策は機能しません。 :|

まったく同じ問題が発生しています。 それをNode12のラムダで実行しようとしています。これはamazonlinux2を実行します。つまり、デフォルトでフォントはインストールされていません。 標準の14フォントをデフォルトでpdfjsに埋め込んだり、ベースシステムにインストールされているフォントに依存するのではなく、それらをロードするためのAPIを公開したりできれば本当に素晴らしいでしょう。 これまでのところ、フォントをシステムにインストールするための私の努力は...成功していません。

この時点で、すべてのPDFをpdf-libなどの別のライブラリで前処理して、14個の標準フォントを明示的に埋め込み、レンダリングのためにこのライブラリに渡すことができると考えています。 少し過剰で面倒ですが、それで問題が解決した場合は...

amazonlinux2を文字通り何時間もいじってフォントをインストールした後、disableFontFaceを明示的にfalseに設定することで、含まれていないフォントをレンダリングできますが、PDFから埋め込まれたフォントは、 @ Hatgorのコメントに見られるのと同じ記号で失敗します。

OK、これまでのところ、PDFを前処理してフォントを埋め込むためのサイコロはありません。 おそらく、PDFに埋め込まれていないフォントを挿入する方法はありますか? 必要な.ttfを別の場所でホストできますが、任意のフォントをロードするためのAPIが表示されません。

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

関連する問題

jigskpatel picture jigskpatel  ·  3コメント

timvandermeij picture timvandermeij  ·  4コメント

AlexP3 picture AlexP3  ·  3コメント

patelsumit5192 picture patelsumit5192  ·  3コメント

PeterNerlich picture PeterNerlich  ·  3コメント