#fonts #windows-server-2008 #nssm #jodconverter
#шрифты #windows-server-2008 #nssm #jodconverter
Вопрос:
Я использую библиотеку jodconverter для преобразования документов Microsoft Word (* .doc) в файлы PDF на внутреннем сервере. Серверная часть представляет собой приложение Spring Boot, работающее на старом Windows Server 2008 Enterprise. (для jodconverter требуется, чтобы на этом компьютере была установлена версия Apache OpenOffice или Libre Office — у меня там установлен OpenOffice 4 — простая установка по умолчанию, не запущенная как служба — я не видел никаких проблем с этим)
Конкретный вариант использования заключается в преобразовании документов, содержащих текст, отображаемый определенным шрифтом, отсутствующим на компьютере с Windows (шрифт штрих-кода IDAutomation — это OTF-файл) — я понял, что установка этого шрифта на сервере будет единственной необходимой вещью для меня (щелкните правой кнопкой мыши пофайл шрифта -> выберите Установить — других вариантов нет), и все выглядело так.
Теперь я запускал серверную часть из командной строки и думал обернуть ее в службу Windows, используя NSSM. Я получил хороший рабочий сервис, работающий под локальной системной учетной записью, который, казалось, работал хорошо.
Позже мне указали, что шрифт штрих-кода больше не отображается во время преобразования документа в PDF. Действительно, я переключился обратно на интерактивную версию командной строки, и шрифт появился снова. Я понимаю, что это явно проблема с тем, как я устанавливаю этот шрифт, и что под локальной системной учетной записью — или что-то еще — к шрифту просто невозможно получить доступ, и используется резервный шрифт.
Я попытался указать запуск службы под другой учетной записью — в частности, той, с которой я установил шрифт, — но это не помогло.
Вопрос а) — как установить шрифт, чтобы он мог быть доступен локальной системной учетной записью? Было бы неплохо, если бы я мог сделать это, избегая необходимости входить в систему как локальный администратор — хотя, если это единственный способ, я буду продолжать это делать — я подумал, будет ли этот вопрос более подходящим для serverfault или superuser, но решил задать его здесь, потому что моя первоначальная проблема кажетсябыть на уровне прикладного программирования
Вопрос b) — есть ли файл журнала, в котором я мог бы отследить фактическое сообщение об ошибке о том, что правильный шрифт не найден и что используется заменяющий шрифт?
Спасибо
[редактировать: содержимое моего pom.xml связано с версией JODConverter]:
<properties>
<jodconverter.version>4.3.0</jodconverter.version>
</properties>
...
<dependencies>
...
<dependency>
<groupId>org.jodconverter</groupId>
<artifactId>jodconverter-spring-boot-starter</artifactId>
<version>${jodconverter.version}</version>
</dependency>
<dependency>
<groupId>org.jodconverter</groupId>
<artifactId>jodconverter-local</artifactId>
<version>${jodconverter.version}</version>
</dependency>
</dependencies>
Комментарии:
1. Не могли бы вы сообщить нам, какую версию jod converter вы используете?
2. @sbraconnier огромное спасибо — я включил информацию о версии в описание проблемы — спасибо за поддержку этого инструмента и за то, что нашли время для нас, пользователей
Ответ №1:
Возможно, вы могли бы попробовать использовать параметр templateProfileDir, который доступен в модуле jodconverter-spring-boot-starter .
Из этого примера (я изменил способ его настройки, поскольку вы используете spring-boot):
Здесь, в моей Windows, после настройки LibreOffice в соответствии с моими потребностями с помощью графического интерфейса пользователя (я думаю, для вас это будет установка шрифта), я скопировал каталог C:UsersmyUserAppDataRoamingLibreOffice4 в C:JodConvertertemplateProfile (чтобы действовать как каталог профиля шаблона, который не будет меняться) и установите templateProfileDir на эту копию (в приложении.yml-файл):
jodconverter:
local:
enabled: true
template-profile-dir: C:/JodConverter/templateProfile
Комментарии:
1. большое вам спасибо за предложение — я не знал о профилях в LibreOffice / OpenOffice. тем не менее, я пытался и не мог заставить это работать — похоже, что установленные шрифты не являются частью профиля пользователя LibreOffice (?) — По крайней мере, тот, который у меня был в перемещаемой папке…
2. omg после перезапуска сервера проблема была устранена. я пишу подробный ответ..
Ответ №2:
Я прошу прощения за всю суету — кажется, что самое старое и мудрое решение, которое годами работало для всех видов компьютерных проблем — да, перезагрузка компьютера — сработало. Я не знаю, сработало ли бы это, если бы я не попробовал следующее:
Я попробовал предложение @sbraconnier, узнав о профилях пользователей, которые использует LibreOffice. В моем случае я использую Apache OpenOffice, но инструкции не меняются. проблема по-прежнему сохранялась.
Затем я увидел несколько других предложений по обновлению кэша шрифтов. Здесь был интересный учебник о том, как это сделать. А именно, они предлагают сначала остановить службу кэша шрифтов Windows, а затем перейти к c:WindowsServiceProfilesLocalServiceAppDataLocal и удалите каталоги и файлы, связанные с FontCache (например, у меня там был файл с именем FontCache-System.dat), а затем также удалить c:WindowsSystem32FNTCACHE.DAT (я полагаю, сохраняя резервную копию) и снова запустите службу кэша шрифтов Windows. Я сделал это, но безрезультатно. Я также заметил, что для восстановления вышеуказанных файлов требуется некоторое время — я не знаю, требуется ли для этого перезагрузка компьютера — я видел, что FontCache-System.dat был восстановлен перед перезапуском, но FNTCACHE.DAT появился только после перезагрузки.
Затем я нашел ссылку об использовании пользовательской локальной папки для шрифтов TrueType здесь . Они предполагают, что вы можете использовать (глобальную) пользовательскую папку, которая не зависит от того, какой профиль пользователя ее использует. Эта папка {установочная папка LibreOffice} share fonts truetype — кстати, эта папка «общего доступа» отражает структуру папки профиля пользователя / экземпляра, упомянутой @sbraconnier — я попытался создать папку truetype и скопировать туда мой шрифт OpenType OTF, но опять же, безрезультатно.
Моей последней попыткой было перезагрузить компьютер — и шрифт каким-то образом был распознан. Я не уверен, что именно из приведенных выше шагов помогло — вот почему я перечислил их все. Еще раз спасибо @sbraconnier