gpt4 book ai didi

itext pdfHtml : set margins

转载 作者:行者123 更新时间:2023-12-02 20:06:40 25 4
gpt4 key购买 nike

我正在使用 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,但不确定它如何进入 HTMLConverter 的 ConvertToPdf 方法。

最佳答案

你用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);

关于itext pdfHtml : set margins,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54450119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com