首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >itext pdfHtml:设置边距

itext pdfHtml:设置边距
EN

Stack Overflow用户
提问于 2019-01-31 05:53:41
回答 1查看 2.4K关注 0票数 2

我正在使用HTMLConverter转换html到PDF,并尝试设置一些页边距。

现有代码:

代码语言:javascript
运行
复制
    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);

有没有人能建议一下如何增加利润?我对setMargin使用了Document类,但不确定如何将其转换为HTMLConverter的convertToPdf方法。

EN

Stack Overflow用户

回答已采纳

发布于 2019-01-31 15:03:16

你不能使用HtmlConverter#convertToElements方法吗?它返回List<IElement>作为结果,然后您可以将其元素添加到具有设置边距的文档中:

代码语言:javascript
运行
复制
 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规则来设置所需的页边距,例如:

代码语言:javascript
运行
复制
@page {
    margin: 0;
}

还有另一种解决方案:为<html>标记实现您自己的自定义标记工作程序,并在其级别上设置边距。例如,要设置零边距,可以创建标记下一个worker:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
converterProperties.setTagWorkerFactory(new CustomTagWorkerFactory());
HtmlConverter.convertToPdf(new File(htmlPath), new File(pdfPath), converterProperties);
票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54450119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档