iText中的图像定位-Java

问题描述 投票:5回答:2

我正在尝试阅读一个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();
java image pdf itext
2个回答
2
投票

您应该对导入的页面使用PdfStamper而不是PdfWriter。您的方法将丢弃所有交互式内容。您也可以在其中使用sorifiend的想法。

要确定给定页面上文本的结尾位置,请查看iText in Action,第二版示例ShowTextMargins,该示例分析PDF并在显示文本边距的矩形上做广告。


7
投票

尝试一下:

首先获取图像需要到达的位置/坐标,然后只需将下面的第二行添加到您的代码中,以便将图像插入到该位置“ 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

© www.soinside.com 2019 - 2024. All rights reserved.