Я пытаюсь использовать iText 7 в Java. Хотите скрывать HTML/XHTML в PDF.xmlworker отсутствует в iText 7 core
По-видимому xmlworker.jar
не существует в iText 7 core
.
Что такое замена iText 7?
Любые решения?
Я пытаюсь использовать iText 7 в Java. Хотите скрывать HTML/XHTML в PDF.xmlworker отсутствует в iText 7 core
По-видимому xmlworker.jar
не существует в iText 7 core
.
Что такое замена iText 7?
Любые решения?
XML Worker - это следующая вещь на дорожной карте в iText, так что да, она будет доступна для iText 7. Но сначала нам нужно закончить порт iText 7 для Java до iText 7 для C#, и мы по-прежнему трудно работать над документированием IText 7. См, например: iText 7: Building Blocks.
В открытом источнике, один релиз часто, один релиз скоро. Вместо того, чтобы держать все код закрыт до все закончено, мы выбрали способ выпуска с открытым исходным кодом: все готово, освобождается. Все, что не готово, будет выпущено, как только оно будет готово.
Главный капитальный ремонт iText требует от нас переписать XML Worker. Преимущество: iText 7 был написан с использованием XML Worker. Все элементы, отмеченные ключом в учебнике, который я упомянул, являются «новыми в iText 7», например. наследование свойств (что позволяет нам применять CSS намного лучше).
Вы увидите значительные улучшения, когда это будет сделано.
Благодарим вас за информацию. –
@Bruno Этот ответ по-прежнему действителен. Я вижу html2pdf на сайте. – HopeKing
@HopeKing Да, мы выпустили [pdfHTML] (https://itextpdf.com/itext7/pdfHTML) и да, это немного запутывает, что имена пакетов/Maven id - это «html2pdf» (html2pdf = pdfHTML). Вы можете найти учебник здесь: https://developers.itextpdf.com/content/itext-7-converting-html-pdf-pdfhtml –
Модуль iText pdfHTML
был выпущен в качестве замены для XmlWorker
. Версия C# может быть загружена с NuGet Gallery. Версия 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);
Или вы можете использовать DefaultFontProvider
и указать его настройки в конструктор:
FontProvider fontProvider = new DefaultFontProvider(false, false, true);
properties.setFontProvider(fontProvider);
DefaultFontProvider
имеет три параметра в конструкторе: первый из них, чтобы указать, следует ли использовать стандартные шрифты (Helvetica
, Courier
, Times
и т. Д.), Второй, чтобы указать, следует ли использовать шрифты, поставляемые с pdfHTML
, а третий - указать, загружать ли системные шрифты. DefaultFontProvider
- это всего лишь подкласс FontProvider
, и поэтому вы всегда можете позвонить addDirectory
или addFont
после того, как экземпляр был создан.
Благодарим вас за информацию. –
На данный момент XmlWorker недоступен для iText7 –
Спасибо за ответ. Я оцениваю функции iText 7. Я слышал, что поддержка и обновления, кажется, больше не доступны для iText 5 после 2017 года, каков график для выпуска xmlworker в iText 7? Является ли эта функция более недоступной после iText 7 или нет? –
Спасибо за помощь. –