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.