Мне не удалось найти HTMLWorker, ParseXHtml, Document и другие связанные классы в iText 7 (в отличие от iText 5). Кто-нибудь может сказать мне, как конвертировать HTML-файл в PDF с помощью iText 7?
Спасибо, Суманаса
Мне не удалось найти HTMLWorker, ParseXHtml, Document и другие связанные классы в iText 7 (в отличие от iText 5). Кто-нибудь может сказать мне, как конвертировать HTML-файл в PDF с помощью iText 7?
Спасибо, Суманаса
HTMLWorker
устарел много лет назад. В iText 5 вы действительно должны действительно использовать XMLWorker
. iText 5 - это EOL (только обновления безопасности, без дополнительных функций), поэтому перейдите на iText 7.Модуль 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);
По словам основателя 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 в указанном месте (путь к файлу).