2016-06-02 6 views
5

Я пытаюсь использовать iText 7 в Java. Хотите скрывать HTML/XHTML в PDF.xmlworker отсутствует в iText 7 core

По-видимому xmlworker.jar не существует в iText 7 core.

Что такое замена iText 7?

Любые решения?

+0

На данный момент XmlWorker недоступен для iText7 –

+0

Спасибо за ответ. Я оцениваю функции iText 7. Я слышал, что поддержка и обновления, кажется, больше не доступны для iText 5 после 2017 года, каков график для выпуска xmlworker в iText 7? Является ли эта функция более недоступной после iText 7 или нет? –

+0

Спасибо за помощь. –

ответ

4

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 намного лучше).

Вы увидите значительные улучшения, когда это будет сделано.

+0

Благодарим вас за информацию. –

+0

@Bruno Этот ответ по-прежнему действителен. Я вижу html2pdf на сайте. – HopeKing

+0

@HopeKing Да, мы выпустили [pdfHTML] (https://itextpdf.com/itext7/pdfHTML) и да, это немного запутывает, что имена пакетов/Maven id - это «html2pdf» (html2pdf = pdfHTML). Вы можете найти учебник здесь: https://developers.itextpdf.com/content/itext-7-converting-html-pdf-pdfhtml –

2

Модуль 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 после того, как экземпляр был создан.

+0

Благодарим вас за информацию. –