尝试设置图像字段时出现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);
我试图使这一变化,但代码中的错误了,这是我的尝试: 矩形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
请参阅最新的答案。 – Petesh
编译无后顾之忧,谢谢,我会让你知道它是如何工作的 – user1884129