Ремонт шрифтов для архивации в нативном Linux

Нативная конвертация PDF/A-4 с сохранением текста/векторов может явно нормализовать отсутствующие шрифты через сконфигурированный процесс Ghostscript pdfwrite, сохранить текст с поиском и векторные пути и провалидировать финальный нативный архивный документ официальным CLI veraPDF до публикации

Колбэк-ABI

{"schemaVersion":1,"type":"pdfa.convert","mode":"preserve","profile":"PDF/A-4","fontRepair":true,"maxFontRepairMilliseconds":120000}

fontRepair по умолчанию false; установка в true явно разрешает замену шрифтов согласно установленной конфигурации шрифтов Ghostscript и возвращает fontRepairPerformed true после успешной нормализации

Ответ также включает textAndVectorsPreserved, validationSucceeded, pageCount и существующие счётчики удалённых полей, подписей и аннотаций; успешная публикация заменяет дескриптор проверенным незашифрованным архивным документом

Конфигурация Pascal

Options := THPDFHeadlessArchivalPreservationOptions.Default;
Options.FontRepair := True;
Options.GhostscriptExecutable := '/usr/bin/gs';
Options.MaxFontRepairMilliseconds := 120000;
Report := HPDFConvertHeadlessToPDFA4PreservingFile(Document, Destination, Options);

GhostscriptExecutable выбирает исполняемый файл нормализации, JavaExecutable и ValidatorJAR — подлинный валидатор, а CancellationToken применяется к обходу ресурсов, проверкам текста, нормализации и валидации

Обработка и лимиты

Конвертер сначала импортирует ресурсы исходных страниц и уплощает подходящие appearance аннотаций в приватный нативный документ, поэтому аутентифицированные входы AES расшифровываются через читатель документа, и исходные права страниц продолжают действовать

Ghostscript получает вектор аргументов с включённым SAFER, baseline prepress, выводом PDF 2.0, встраиванием шрифтов и явными переопределениями уменьшения изображений; ограниченный обход ресурсов собирает имена шрифтов в шестнадцатеричные имена PostScript и явный список AlwaysEmbed для старых версий Ghostscript

Процесс нормализации запускается через /usr/bin/prlimit с лимитом адресного пространства от MaxWorkingBytes и лимитом размера файла от MaxOutputBytes; его вывод и диагностика имеют байтовые лимиты, а MaxFontRepairMilliseconds ограничивает время обработки

Нормализованные страницы обязаны сохранить исходное число страниц и последовательность извлечённых символов, допуская изменения раскладки строк и пробелов и дополнительный текст уплощённых appearance; конвертер затем импортирует их в свежий нативный шаблон PDF/A-4 с output intent sRGB, XMP и идентификаторами документа

Финальный кандидат обязан пройти официальную сконфигурированную валидацию veraPDF PDF/A-4 до fsync и атомарного переименования; недоступный бэкенд, изменившийся текст, недопустимый вывод, исчерпанный бюджет, таймаут или отмена оставляют назначение нетронутым и чистят приватные staging-файлы

Таймаут и отмена завершают, при необходимости убивают и забирают прямой процесс нормализации; исполняемые файлы подпроцессов должны запускаться напрямую, а не через shell или wrapper, создающий посторонних потомков

Рантайм и точность

Ремонту шрифтов нужны Ghostscript, его установленные шрифты-замены и util-linux prlimit; валидации сохранения нужны headless-рантайм Java, официальный JAR CLI veraPDF и Little CMS 2 для нативной генерации профиля sRGB

Заменённые шрифты могут изменить очертания глифов и раскладку; когда важна точная внешность, лучше доступный исходный шрифт, а явный ремонт шрифтов не обещает побайтово идентичных ресурсов страниц или сохранённых подписей

Подписанные входы требуют AllowSignatureInvalidation true, алиасы источника/назначения отклоняются, а видимым аннотациям по-прежнему нужен пригодный normal appearance до уплощения

Независимая приёмка покрывает 12 стандартных латинских начертаний и невстроенный шрифт Arial TrueType на plain-, AES R5- и AES R6-входах, повёрнутые страницы, фактические встроенные программы шрифтов, текст с акцентами с поиском, сохранённые векторные пути, точность пикселей и подлинную валидацию PDF/A-4

Импорт страниц и сохранение · Нативный колбэк-ABI · Нативные сценарии