Получил ошибку «Шрифт не встроен» при преобразовании HTML в PDF с помощью Conformance PDFUA с использованием Java iText 8.0.4

Я конвертирую HTML в PDF с помощью itext версии 8.0.4, но получаю следующее исключение:

com.itextpdf.pdfua.Exceptions.PDFUAConformanceException: Следующие шрифты не встроены: Times-Roman

Я получаю вышеуказанное исключение, когда пытаюсь создать объект документа с классом PdfUADocument. Проблем нет, если объект документа создан с помощью PdfDocument и не установлено соответствие.

В чем причина этого исключения?

Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Community 11.06.2024 01:43
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Спецификация PDFUA требует, чтобы вы встроили все шрифты, которые использует ваш PDF-файл.

Итак, чтобы это работало в html2pdf, вам следует настроить FontProvider на использование только тех шрифтов, которые поставляются в виде файлов шрифтов.

Что-то вроде этого должно помочь:

ConverterProperties converterProperties = new ConverterProperties();
FontProvider fontProvider = new DefaultFontProvider(false, true, false);
converterProperties.setFontProvider(fontProvider);
HtmlConverter.convertToPdf(new FileInputStream(sourceHtml), pdfDocument, converterProperties);

В конструкторе DefaultFontProvider первое значение false означает: не регистрируйте StandardPdfFonts. Это шрифты, которые должны быть доступны каждому pdfProcesser, но они не встроены, поэтому нам нужно отключить это. Второй параметр имеет значение true, поскольку при этом будут загружены шрифты, встроенные в саму библиотеку.

И последняя ошибка — отключить загрузку шрифтов, доступных на вашем компьютере.

Конечно, если вы используете собственные шрифты, вы можете просто добавить их в поставщик шрифтов с помощью метода fontProvider.addFont().

Если это не помогло, предоставьте более подробную информацию.

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