iText 7 - HTMLWorker и ParseXHtml отсутствуют

Мне не удалось найти HTMLWorker, ParseXHtml, Document и другие связанные классы в iText 7 (в отличие от iText 5). Кто-нибудь может сказать мне, как конвертировать HTML-файл в PDF с помощью iText 7?

Спасибо, Суманаса


person Sumanasa    schedule 30.11.2016    source источник


Ответы (3)


  1. HTMLWorker устарел много лет назад. В iText 5 вы действительно должны действительно использовать XMLWorker. iText 5 - это EOL (только обновления безопасности, без дополнительных функций), поэтому перейдите на iText 7.
  2. Для iText 7 используйте надстройку pdfHTML. См. Ответ Алексея ниже.
person Amedee Van Gasse    schedule 30.11.2016

Модуль iText pdfHTML выпущен в качестве замены XmlWorker. Версию C # можно загрузить из галереи NuGet. Версию Java можно загрузить из Artifactory.

Главный класс, который вы ищете, - это HtmlConverter. Он содержит множество перегрузок статических методов для преобразования html либо в список элементов, которые будут добавлены в структуры макета в будущем, во весь экземпляр com.itextpdf.layout.Document, либо прямо в файл .pdf.

Пример преобразования файла .html в .pdf:

HtmlConverter.convertToPdf(new File(htmlFilePath), new File(outPdfFilePath));

Пример преобразования html в элементы макета:

String html = "<p>Hello world!</p>";
List<IElement> lst = HtmlConverter.convertToElements(html);

Кроме того, pdfHTML теперь поддерживает @media правила, поэтому вы можете указать конфигурацию, которая будет использоваться для применения CSS, например, для использования @media print инструкций, вам нужно будет настроить MediaDeviceDescription соответственно:

ConverterProperties properties = new ConverterProperties()
     .setMediaDeviceDescription(new MediaDeviceDescription(MediaType.PRINT));
HtmlConverter.convertToPdf(new File(htmlPath), new File(outPdfPath), properties);

Чтобы указать набор шрифтов, которые вы хотели бы использовать при преобразовании HTML в PDF, вы также можете настроить FontProvider:

FontProvider fontProvider = new FontProvider();
fontProvider.addDirectory(fontsDir)
properties.setFontProvider(fontProvider);
person Alexey Subach    schedule 21.02.2017

По словам основателя iText Group, HTMLWorker давно устарел и не собирался преобразовывать полные HTML-страницы. Он в основном не знает, что веб-страница состоит из <head> и <body> разделов.

XMLWorker был задуман как общий фреймворк для синтаксического анализа XML. Чтобы избежать этих конфликтов, в iText 7 появилась функция convertToPdf, которая может конвертировать HTML в PDF.

Ниже будет фрагмент кода.

HtmlConverter.convertToPdf(new File(src), new File(dest));

Добавьте код HTML или .html файл в первый параметр и укажите местоположение файла для сохранения HTML в PDF в указанном месте (путь к файлу).

person Dulith De Costa    schedule 17.03.2019