Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iText-Java中的图像定位_Java_Image_Pdf_Itext - Fatal编程技术网

iText-Java中的图像定位

iText-Java中的图像定位,java,image,pdf,itext,Java,Image,Pdf,Itext,我正在尝试读取一个PDF文件,并将其数据复制到另一个PDF文件中。第一个PDF包含一些文本和图像,我希望在第二个PDF中写一个图像,精确到文本的结尾(基本上是PDF文件的结尾)。现在它只是在顶部打印。我怎样才能做这个改变 PdfReader reader = null; reader = new PdfReader(Var.input); Document document=new Document(); PdfWriter writer = null; writer = PdfWriter.g

我正在尝试读取一个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();
试试这个:

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


在这里查看iText 5中的一些示例:

对于导入的页面,您应该使用PdfStamper而不是PdfWriter。您的方法丢弃了所有交互式内容。你也可以使用Sorifind的想法


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

哦,这太棒了。但是有没有办法确定文本的结尾是X和Y?或者在最后一页的底部中间?我知道有几种方法可以做到这一点,但从您的代码来看,mkl关于文本边距的建议将是获得X和Y的最简单方法。另一种需要更多工作的方法是从原始PDF逐段读写部分,并在运行时计算X和Y位置,它比较慢,但是这样你就知道图像可以放在哪里,你可以在文本中和文本周围添加图像。它查找所有文本的边距。这与他所说的相符,但如果他的pdf包含页脚,那么示例也会将其视为文本的一部分。因此,他必须修改代码以考虑页脚。谢谢。这正是我想要的工作方式。:)但是,有没有什么方法可以让我也使用pdf母版来放置带有坐标的文本呢?谢谢。这正是我想要的工作方式。:)但是有没有什么方法我也可以用pdf压模来放置带有坐标的文本呢?是的,你可以。不过,我得看看怎么。。。我的用例不包括向现有文档添加文本。我必须添加一组图像和文本,结果是图像很容易,但文本有点难处理。如果您能提供一些帮助,我们将不胜感激:)请查看第二版iText-in-Action的第6章,免费提供。第6.3.1小节应为您指明道路。不管怎么说,这整章都很好读。。。
Image image = Image.getInstance(String RESOURCE);
image.setAbsolutePosition(X, Y);
writer.getDirectContent().addImage(image);