ここにPDFファイルを添付(推奨)またはリンクします:
EMG8 -Cambridge Essentail Gold Maths 8-B 117.pdf
構成:
問題を再現する手順:
期待される動作は何ですか? (スクリーンショットを追加)
他のPDFリーダーでは、正常にレンダリングされます。
ビューアへのリンク(mozilla.github.io/pdf.js以外のサイトでホストされている場合、またはFirefox / Chrome拡張機能としてホストされている場合):
現在のgithubページビューア: https :
ノート:
PDF内のフォントを編集することで、それを機能させることができました。 現在は「TimesNewRoman PS」ですが、「TimesNewRoman」だけで再レンダリングすると修正されるようです。
コンソールエラーや、CMapの欠落などの解決策のその他の目に見える兆候はありません。
残念ながら、PDFを変更することは許可されていないため、PDFを再レンダリングすることは実行可能な解決策ではありません。
誰かがこれと可能な解決策についての洞察を与えることができれば、それは大いに感謝されます🤠
PDFは同じフォントを何度も定義しています。 たとえば、フォントLULQLP+TimesLTStd-Roman
は9回定義されています。 それぞれが同じFontDescriptorと同じ埋め込みCFFデータストリームを参照します。
core / Evaluationor.jsのPartialEvaluator.prototype.preEvaluateFont()
にフォントハッシュ計算があります。 ハッシュにエントリEncoding、ToUnicode、およびWidthsを追加します。 PDF内の一部のフォントは、幅も含めてすべてのエントリが同一であるため、同一のハッシュコードを取得します。 エントリFirstCharとLastCharのみが異なります。 フォントが同一のハッシュコードを取得する場合、OpenTypeに変換されないように、フォントがスキップされる可能性がありますか?
これは、元のPDFの2つのフォントを含む縮小PDFです。
issue10665_reduced.pdf
core / Evaluationor.jsの
PartialEvaluator.prototype.preEvaluateFont()
にフォントハッシュ計算があります。 ハッシュにエントリEncoding、ToUnicode、およびWidthsを追加します。 PDF内の一部のフォントは、幅も含めてすべてのエントリが同一であるため、同一のハッシュコードを取得します。 エントリFirstCharとLastCharのみが異なります。
本当に優れた分析、ありがとう。 これにより、バグを簡単に修正できました。
フォントが同一のハッシュコードを取得する場合、OpenTypeに変換されないように、フォントがスキップされる可能性がありますか?
いくつかのひどく生成されたPDFファイルでは、大量の同一のフォントが存在する可能性があり、 preEvaluateFont
の目的は、重複するフォントをロード/解析する必要をなくすことでした。 したがって、 loadFont
はhash
esを比較し、可能であれば、すでにロード/解析されたフォントを使用します。
明らかに、これはすべて、 hash
が実際に正しい/一意であるという事実にかかっていますが、幸いなことに、そのコードには何年にもわたってバグが比較的少ないです。
助けてくれて本当にありがとう!
最も参考になるコメント
PDFは同じフォントを何度も定義しています。 たとえば、フォント
LULQLP+TimesLTStd-Roman
は9回定義されています。 それぞれが同じFontDescriptorと同じ埋め込みCFFデータストリームを参照します。core / Evaluationor.jsの
PartialEvaluator.prototype.preEvaluateFont()
にフォントハッシュ計算があります。 ハッシュにエントリEncoding、ToUnicode、およびWidthsを追加します。 PDF内の一部のフォントは、幅も含めてすべてのエントリが同一であるため、同一のハッシュコードを取得します。 エントリFirstCharとLastCharのみが異なります。 フォントが同一のハッシュコードを取得する場合、OpenTypeに変換されないように、フォントがスキップされる可能性がありますか?これは、元のPDFの2つのフォントを含む縮小PDFです。
issue10665_reduced.pdf