这个问题与我以前的问题有关: Text associated to PDF paragraph in document content object wit PDFBox
在这种情况下,我已使用以下方法阅读了PDF文档中的注释:
PDDocument document;
Iterator<PDPage> it = document.getPages().iterator();
annotations = pg.getAnnotations();
//some parsing and I get:
List<PDPageXYZDestination> linksOfType1;
List<PDActionGoTo> linksOfType2;
List<PDActionURI> linksOfType3;
要将它们链接到目录树,我需要在上面的链接对象和从document.getDocumentCatalog()。getStructureTreeRoot()中读取的PDStructureElement之间建立连接。 但是我真的不能解决这个问题。我曾尝试寻找基础对象的编号,但唯一的属性是COSDictionary,其内容如下:
{COSName {A} = COSObject {111,0}, COSName {BS} = COSDictionary {COSName {S}:COSName {S}; COSName {Type}:COSName {Border}; COSName {W}:COSInt {0};}, COSName {Border} = COSArray {[COSInt {0},COSInt {0},COSInt {0}]}, COSName {H} = COSName {N},COSName {Rect} = COSArray {[COSFloat {70.8661}], COSFloat {709.017},COSFloat {558.425},COSFloat {694.214}]}, COSName {StructParent} = COSInt {4},COSName {Subtype} = COSName {Link}, COSName {Type} = COSName {Annot}}
我希望从PDF规范中获取obj编号,但不知道如何。来自以下PDF参考的示例:
PDStructure元素也会发生同样的情况,我可以手动链接到此元素,但是它没有任何索引,并且其基础COSDictionary不匹配。
到目前为止,我唯一能想到的就是通过读取页面中的索引来进行匹配,因为这可以做到,但似乎不够健壮。