这个问题在这里已经有了答案:
如何在pdfbox api 2中获取字段页(1个答案)
上个月关门了。
我有一个现有的pdf,我想打开,并添加内容的网页,其中一个特定的 PDField
(或者具体地说 PDTerminalField
,我不认为这是重要的)是。可能在第一页,也可能在以后的任何一页。
我知道这个字段的名称,通过它,我可以查找它,甚至可以得到它在那个页面上的尺寸和位置( DRectangle mediabox = new PDRectangle((COSArray) fieldDict.getDictionaryObject(COSName.RECT));
)
但是,我找不到一种方法来获取它所在页面的编号/索引,因此我可以在正确的页面上进行写作。
PDAcroForm acroForm = pdfDocument.getDocumentCatalog().getAcroForm();
PDField docField = acroForm.getField("the_coolest_field");
int page = docField.??? // This is the missing part.
PDPageContentStream contentStream = new PDPageContentStream(pdfDocument,
pdfDocument.getPage(page), PDPageContentStream.AppendMode.APPEND, true);
// now write something on the page where the field is in.
1条答案
按热度按时间dy1byipe1#
使用这个注解中给出的提示,我可以创建一个包含字段名和它出现的(最后一个)页面的Map。
现在查找页面就像
请注意,如果由于某种原因该小部件不存在,这可能会引发nullpointerexception。
前面的答案如下。看来我的方法是错的,但我保留它作为参考。
我找到了
/P
元素,看起来像是页面: