在iText5中如何尽可能将PdfTemplate添加到PdfStamper中?

时间:2018-04-19 04:45:39

标签: java pdf itext pdf-generation

我有一个用例,我无法弄清楚如何实现。

我正在使用无头chrome将富文本编辑器导出为pdf,然后我需要剪切创建的PDF的一部分并将其作为pdf注释嵌入到另一个父PDF中,以使注释看起来完全相同作为我从创建的PDF中删除的部分。

我能够使用以下提供的说明从创建的PDF中正确计算和剪切我需要的精确区域: https://developers.itextpdf.com/examples/stamping-content-existing-pdfs-itext5/cut-and-paste-content-page

PdfTemplate template2 = cb.createTemplate(pageSize.getWidth(), pageSize.getHeight());
template2.rectangle(toMove.getLeft(), toMove.getBottom(), toMove.getWidth(), toMove.getHeight());
template2.clip();
template2.newPath();
template2.addTemplate(page, 0, 0);
cb.addTemplate(template1, 0, 0);
cb.addTemplate(template2, -20, -2);

我想通过PdfStamper添加PDFTemplate。

这可能吗?如果不是现在我可以用另一种方法实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

在您所引用的示例中,您获得cb,如下所示:

PdfContentByte cb = writer.getDirectContent();

使用PdfStamper时,您可以获得cb,如下所示:

PdfContentByte cb = stamper.getUnderContent(p);

或者像这样:

PdfContentByte cb = stamper.getOverContent(p);

前一种方法将在现有内容下添加新内容;后一种方法将在现有内容之上添加新内容。在这些行中,p是页码(从1到现有文档的总页数)。有关示例,请参阅How to superimpose pages from existing documents into another document?

如果您要向现有文档添加新页面,请按照How to add blank pages to an existing PDF in java?中的说明使用insertPage()方法。添加空白页后,您可以向其添加PdfTemplate