itext pdfHtml: установить поля - PullRequest
       32

itext pdfHtml: установить поля

0 голосов
/ 31 января 2019

Я использую HTMLConverter для преобразования html в PDF и пытаюсь установить некоторые поля.

Существующий код:

    ConverterProperties props = new ConverterProperties();
    props.setBaseUri("src/main/resources/xslt");

    PdfDocument pdf = new PdfDocument(new PdfWriter(new FileOutputStream(dest)));
    pdf.setDefaultPageSize(new PageSize(612F, 792F));

    HtmlConverter.convertToPdf( html, pdf,    props);

Может кто-нибудь подсказать, пожалуйста, как добавить поля?Я использовал класс Document для setMargin, но не уверен, как это можно сделать с помощью метода convertToPdf HTMLConverter.

1 Ответ

0 голосов
/ 31 января 2019

Разве вы не можете использовать метод HtmlConverter#convertToElements.В результате он возвращает List<IElement>, а затем вы можете добавить его элементы в документ с установленными полями:

 Document document = new Document(pdfDocument);
 List<IElement> list = HtmlConverter.convertToElements(new FileInputStream(htmlSource));
 for (IElement element : list) {
     if (element instanceof IBlockElement) {
            document.add((IBlockElement) element);
     }
 }

Другой подход: в вашем html просто введите правило @page, которое устанавливает необходимые поля,например:

@page {
    margin: 0;
}

Еще одно решение: реализовать свой собственный рабочий тег для тега <html> и установить поля на его уровне.Например, чтобы установить нулевые поля, можно создать тег для следующего работника:

public class CustomTagWorkerFactory extends DefaultTagWorkerFactory {
     public ITagWorker getCustomTagWorker(IElementNode tag, ProcessorContext context) {
         if (TagConstants.HTML.equals(tag.name())) {
             return new ZeroMarginHtmlTagWorker(tag, context);
         }
         return null;
     }
}



public class ZeroMarginHtmlTagWorker extends HtmlTagWorker {
     public ZeroMarginHtmlTagWorker(IElementNode element, ProcessorContext context) {
         super(element, context);
         Document doc = (Document) getElementResult();
         doc.setMargins(0, 0, 0, 0);
     }
}

и передать его в качестве параметра ConverterProperties в Htmlconverter:

converterProperties.setTagWorkerFactory(new CustomTagWorkerFactory());
HtmlConverter.convertToPdf(new File(htmlPath), new File(pdfPath), converterProperties);
...