5

我正在尝试阅读一个 PDF 并将其数据复制到另一个 PDF 中。第一个 PDF 包含一些文本和图像,我希望在第二个 PDF 中准确地在文本结束的地方写一个图像(这基本上是 PDF 文件的结尾)。现在它只打印在顶部。我怎样才能做出这种改变?

PdfReader reader = null;
reader = new PdfReader(Var.input);
Document document=new Document();
PdfWriter writer = null;
writer = PdfWriter.getInstance(document,new FileOutputStream(Var.output));
PdfImportedPage page = writer.getImportedPage(reader, 1); 
reader.close();  
document.open();
PdfContentByte cb = writer.getDirectContent();
// Copy first page of existing PDF into output PDF
document.newPage();
cb.addTemplate(page, 0, 0);

// Add your new data / text here
Image image = null;
image = Image.getInstance (Var.qr);
document.add(image);
document.close();
4

2 回答 2

8

尝试这个:

首先获取图像需要去的位置/坐标,然后只需将下面的第二行添加到您的代码中,以便将图像插入该位置“X,Y”

Image image = Image.getInstance(String RESOURCE);
image.setAbsolutePosition(X, Y);
writer.getDirectContent().addImage(image);

在此处查看 iText 5 中的一些示例:https ://itextpdf.com/en/resources/examples/itext-5-legacy/chapter-3-adding-content-absolute-positions

于 2012-10-23T00:58:50.683 回答
2

您应该在导入页面时使用 PdfStamper 而不是 PdfWriter。您的方法丢弃了所有交互式内容。你也可以在那里使用sorifiend的想法。

要确定给定页面上的文本在哪里结束,请查看 iText in Action,第 2 版示例ShowTextMargins,它解析 PDF 并广告显示文本边距的矩形。

于 2012-10-23T11:53:40.223 回答