尝试设置图像字段时出现iText错误

问题描述:

我正在使用iText 5.3.4并尝试设置图像字段,下面的代码是布鲁诺建议我使用的,但是我得到一个错误“表达式的类型必须是数组类型,但它解析为List“。 我没有看到如何以api的方式编写代码的文档。 有没有人有这个应该如何写的想法? 或者如何将图像发送到图像字段?尝试设置图像字段时出现iText错误

Rectangle rect = form.getFieldPositions(fieldName)[0].position; 
int page = form.getFieldPositions(fieldName)[0].page; 
image1.scaleAbsolute(rect.getWidth(), rect.getHeight()); 
img.setAbsolutePosition(rect.getLeft(), rect.getBottom()); 
stamper.getOverContent(page).addImage(img); 

getFieldPositions回报是List<AcroFields.FieldPosition>型的,所以投诉是有效的。您应该使用.get(0)而不是[0]来引用集合中的第一个项目。

一个简单的重构可能是:

List<AcroFields.FieldPosition> positions = form.getFieldPositions(fieldName); 
Rectangle rect = positions.get(0).position; 
int page = positions.get(0).page; 
image1.scaleAbsolute(rect.getWidth(), rect.getHeight()); 
img.setAbsolutePosition(rect.getLeft(), rect.getBottom()); 
stamper.getOverContent(page).addImage(img); 
+0

我试图使这一变化,但代码中的错误了,这是我的尝试: 矩形RECT =(矩形)form.getFieldPositions(字段名)获得( 0); int page = form.getFieldPositions(fieldName).get(0); //错误我们在这里,因为它不再返回int img.scaleAbsolute(rect.getWidth(),rect.getHeight()); img.setAbsolutePosition(rect.getLeft(),rect.getBottom()); stamper.getOverContent(page).addImage(img); //如果我将页面更改为obj,则该行错误输出,因为页面不再是有效的参数 您能否写出来,以便我可以看到您的意思?代码示例请 – user1884129

+0

请参阅最新的答案。 – Petesh

+0

编译无后顾之忧,谢谢,我会让你知道它是如何工作的 – user1884129