ABCPDF шрифт для доступа к Windows 2012

Проблема: после миграции стабильной системы с Win 2008 на Win 2012 ABCPDF не может правильно задавать шрифты. Мы подозреваем проблему с разрешениями Windows, но не знаем, что или как ее исправить.

Предыстория: в течение многих лет мы пользовались ABCPDF для только что переведенного из Win 2008 R2 в Win 2012 R2 Datacenter. Мы используем ActiveX DLL - да, мы хотим заменить их, но пока это выходит за рамки. Текущий уровень ABCPDF - ABCPDF 8.1. DLL-библиотека запускается под COM-менеджером и имеет определенный набор идентификаторов запуска от имени, чтобы избежать общих проблем с доступом, возникающих при работе с учетными записями Network Svc или System.

Наше приложение использует файлы пользовательских шрифтов, что означает, что мы не полагаемся на шрифты, устанавливаемые под Windows. Мы используем вызов Windows API

AddFontResourceEx(font_path, FR_PRIVATE, &O0)

загружать шрифты в память и запускать процедуры измерения текста. Доказано, что это работает, потому что мы генерируем небольшое растровое изображение с образцами символов из выбранного шрифта, и глифы, которые мы видим, правильные. Вывод заключается в том, что шрифты загружаются через Windows API успешно. Это важно, поскольку информирует нас о том, что шрифты находятся там, где они должны быть, и что учетная запись пользователя с правами доступа может получить к ним доступ.

Тем временем мы предоставляем тот же шрифт ABCPDF через

oDoc.AddFont(font_path)

но сгенерированный PDF не включает глифы определенного шрифта. Проверка в Acrobat Pro показывает, что используется Times New Roman.

Все отлично работает на старой установке Win2008. После перехода на Win 2012 R2 у нас есть эта проблема.

Вывод: код DLL может получить доступ к шрифту в Win API, а ABCPDF - нет. Подозреваю, что некоторые изменения прав в Windows 2012. Помогите?

1 ответ

Решение

Когда мы установили ABCPDF, он был установлен как пользователь, который не был администратором. Решением было удаление, а затем следуйте советам на веб-сайте Websupergoo, который необходимо установить с помощью Run-As Administrator.

Другие вопросы по тегам