Я конвертирую HTML в PDF с помощью itext версии 8.0.4, но получаю следующее исключение:
com.itextpdf.pdfua.Exceptions.PDFUAConformanceException: Следующие шрифты не встроены: Times-Roman
Я получаю вышеуказанное исключение, когда пытаюсь создать объект документа с классом PdfUADocument. Проблем нет, если объект документа создан с помощью PdfDocument и не установлено соответствие.
В чем причина этого исключения?




Спецификация 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().
Если это не помогло, предоставьте более подробную информацию.
Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.