Прикрепите (рекомендуется) или ссылку на файл PDF здесь:
EMG8 -Cambridge Essentail Gold Maths 8-B 117.pdf
Конфигурация:
Шаги по воспроизведению проблемы:
Какое ожидаемое поведение? (добавить скриншот)
На любом другом PDF-ридере он отлично отображает:
Ссылка на программу просмотра (если она размещена на сайте, отличном от mozilla.github.io/pdf.js или как расширение Firefox / Chrome):
Текущий просмотрщик страниц github: https://mozilla.github.io/pdf.js/web/viewer.html
Примечания:
Нам удалось заставить его работать, отредактировав шрифты в PDF. В настоящее время это «Times New Roman PS», повторная визуализация с использованием только «Times New Roman», кажется, исправляет.
Ошибок консоли или каких-либо других видимых признаков решения, таких как отсутствие CMaps, нет.
К сожалению, нам не разрешено изменять PDF-файлы, поэтому повторная визуализация каждого из них не является жизнеспособным решением.
Если кто-нибудь может дать какое-либо представление об этом и о возможном решении, это будет очень признательно 🤠
PDF определяет одни и те же шрифты много раз. Например, шрифт LULQLP+TimesLTStd-Roman
определяется девять раз. Каждый из них относится к одному и тому же FontDescriptor и одному и тому же встроенному потоку данных CFF.
Вычисление хэша шрифта выполняется в PartialEvaluator.prototype.preEvaluateFont()
в core / evalator.js. Он добавляет в хэш записи «Кодировка», «ToUnicode» и «Ширина». Некоторые шрифты в PDF получают идентичные хэш-коды, потому что все упомянутые записи идентичны, даже ширина. Различаются только записи FirstChar и LastChar. Если шрифты получают одинаковые хэш-коды, может ли это привести к тому, что шрифт будет пропущен, чтобы он не был преобразован в OpenType?
Вот уменьшенный PDF-файл, содержащий два шрифта из исходного PDF-файла.
issue10665_reduced.pdf
Вычисление хэша шрифта выполняется в
PartialEvaluator.prototype.preEvaluateFont()
в core / evalator.js. Он добавляет в хэш записи «Кодировка», «ToUnicode» и «Ширина». Некоторые шрифты в PDF получают идентичные хэш-коды, потому что все упомянутые записи идентичны, даже ширина. Различаются только записи FirstChar и LastChar.
Действительно отличный анализ, спасибо; это упростило исправление ошибки!
Если шрифты получают одинаковые хэш-коды, может ли это привести к тому, что шрифт будет пропущен, чтобы он не был преобразован в OpenType?
В некоторых плохо сгенерированных файлах PDF может быть огромное количество идентичных шрифтов, и цель preEvaluateFont
заключалась в том, чтобы просто избежать необходимости загружать / анализировать повторяющиеся шрифты. Следовательно, loadFont
будет сравнивать hash
es и, если возможно, использовать уже загруженный / проанализированный шрифт.
Очевидно, все это зависит от того факта, что hash
es на самом деле правильные / уникальные, но, к счастью, за эти годы в этом коде было относительно мало ошибок.
Это здорово, большое спасибо за помощь!
Самый полезный комментарий
PDF определяет одни и те же шрифты много раз. Например, шрифт
LULQLP+TimesLTStd-Roman
определяется девять раз. Каждый из них относится к одному и тому же FontDescriptor и одному и тому же встроенному потоку данных CFF.Вычисление хэша шрифта выполняется в
PartialEvaluator.prototype.preEvaluateFont()
в core / evalator.js. Он добавляет в хэш записи «Кодировка», «ToUnicode» и «Ширина». Некоторые шрифты в PDF получают идентичные хэш-коды, потому что все упомянутые записи идентичны, даже ширина. Различаются только записи FirstChar и LastChar. Если шрифты получают одинаковые хэш-коды, может ли это привести к тому, что шрифт будет пропущен, чтобы он не был преобразован в OpenType?Вот уменьшенный PDF-файл, содержащий два шрифта из исходного PDF-файла.
issue10665_reduced.pdf