Pdf2htmlEX распространенная ошибка «Не удается загрузить шрифт» - PullRequest
0 голосов
/ 05 октября 2019

Запуск двоичного файла Windows pdf2htmlEX.exe из командной строки работает должным образом. Хотя при запуске двоичного файла pdf2htmlEX Windows в оболочке (в моем случае - .Net) я получил сообщение об ошибке, подобное приведенному ниже.

__tmp_font1.ttf is not in a known format (or uses features of that format fontfo
rge does not support, or is so badly corrupted as to be unreadable)
Cannot load font C:\Users\admin\AppData\Local\Temp\pdf2htmlEX-5RLDCX/__tmp_fo
nt1.ttf

1 Ответ

0 голосов
/ 05 октября 2019

Это довольно неоднозначная ошибка, которая часто встречается среди пользователей при использовании бинарной версии windows.

Судя по всему, Лу Ванг не смог предложить решение для пользователей Windows, так как все связанные сообщения помечены как «недостаточно информации». К сожалению, проект pdf2htmlEX также заархивирован, и новые комментарии не могут быть добавлены, поэтому я добавляю эту информацию здесь в надежде, что это может помочь кому-то еще в будущем.

В моем сценариибиблиотека вызывается с помощью метода-оболочки ASP.Net с использованием System.Diagnostics.Process для преобразования загруженных файлов в версии HTML. Библиотека Pdf2htmlEX будет работать без проблем из командной строки, и по некоторым причинам также будет отлично работать в моей среде разработки, но не в производственной среде (обе из которых - Windows Server 2012R2).

Мое первое предположение, и правильно, было то, что была проблема с разрешениями. Pdf2htmlEX внутренне использует FontForge для обработки шрифтов, и один или оба используют каталог Windows Temp по умолчанию для хранения файлов ресурсов, используемых при создании HTML и / или других файлов. И я «верю», хотя и не подтвердил, что он также может использовать папку %USERPROFILE%\AppData\Local\Temp активного пользователя ...

При выполнении тестовых команд из командной строки вы работаете в своем пользовательском контексте, и все, что вы делаете. пользователь может сделать, Pdf2htmlEX может сделать. Таким образом, все работает как ожидалось.

В серверной среде процесс работает под ApplicationPoolIdentity, специальным типом пользователя IIS с ограниченными разрешениями. Здесь это не удалось для меня. Хотя я видел папки и файлы, созданные в папке Temp Windows, они не могли быть открыты Pdf2HtmlEX для создания конечных файлов в другом месте.

Решение: (могут быть и другие решения для вашего индивидуального случая) В моем случае добавление нового системного пользователя, добавление этого пользователя в группу Users, а затем настройка IISрабочий процесс для этой учетной записи решил проблему. Я полагаю, что причина в том, что группа Users имеет доступ для чтения / записи к каталогу Windows Temp и, возможно, к другим областям системы, необходимым для завершения Pdf2htmlEX.

...