当前位置: 首页 > 知识库问答 >
问题:

itext PDFHTML:设置边距

楚畅
2023-03-14

现有代码:

    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类来设置Margin,但不确定如何将其转化为HtmlConverter的convertToPdf方法。

共有1个答案

狄睿
2023-03-14

您不可能使用HTMLConverter#ConvertToElements方法吗。结果返回list ,然后您可以将其元素添加到具有设置边距的文档中:

 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;
}

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

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.setTagWorkerFactory(new CustomTagWorkerFactory());
HtmlConverter.convertToPdf(new File(htmlPath), new File(pdfPath), converterProperties);
 类似资料:
  • 使用Apache poi创建一个基本的word文档,我需要更改页面边距。这个问题的答案似乎很完美,但我没有CTPageMar类。我用的是3.10。有谁用不同的版本或不同的方法运气吗?

  • 我知道以前有人问过这样的问题: 类似的问题 但我的问题是当我这样做的时候: 它显示参数没有setMargins。谁能帮忙?

  • 在区划图层一级图层内,可设置图层边界,用于明确该图层的业务范围,超出图层边界的区划会自动裁切 操作步骤如下: 1.点击打开区划图层“更多”菜单,选择“设置边界范围” 2.单击选中区域,可以连续选中多个 双击进入下一级区划 3.选中行政区确认后,自动显示行政区边界,对于超过边界的画区行为,会报错显示

  • 当前结果:下边框为灰色 所需结果:所有边框均为白色 问题:CSS中的边框颜色设置为白色

  • 我正在我的应用程序中使用新的导航抽屉。它很棒,除了我没有找到一种简单的方法来设置抽屉是如何打开的。默认行为是从屏幕的左边缘拖动打开。这很好,除非手机/桌子有一个外壳,并且手机的边缘不能被触摸。我想允许用户触摸并从屏幕的边缘向左拖动。这很容易与其他导航抽屉库(滑动库)一起设置。不幸的是,我没有看到谷歌的库有任何东西。 对于NavigationLayout,可以使用一个onTouchEvent()方法

  • 问题内容: 我尝试将大小设置为零或在Java中删除打印文档的边框。它始终具有标准的白色边框。 这是我打印JPanel和一些组件的功能: 我正在使用Adobe PDF打印机,因为这里没有任何打印机。有什么建议? 问题答案: 使用带有参数的PrinterJob.setPrintable()版本。 在PageFormat中,设置纸张的可成像区域没有边框(x = 0,y = 0,width =纸张的宽度,