如何使用pdfbox java修复链接可访问性的标记注释失败/错误?

如何使用pdfbox java修复链接可访问性的标记注释失败/错误?,java,pdf,accessibility,pdfbox,tagged-pdf,Java,Pdf,Accessibility,Pdfbox,Tagged Pdf,使用adobe找到解决方案- 如何使用pdfbox添加链接OBJR(链接注释的对象引用) `PDAnnotationLink txtLink = new PDAnnotationLink(); PDRectangle position = new PDRectangle(); position.setLowerLeftX(PDFUtils.lw_lft_x); position.setLowerLeftY(PDFUtils.lw_lf

使用adobe找到解决方案-

如何使用pdfbox添加链接OBJR(链接注释的对象引用)

       `PDAnnotationLink txtLink = new PDAnnotationLink();
        PDRectangle position = new PDRectangle();
        position.setLowerLeftX(PDFUtils.lw_lft_x);
        position.setLowerLeftY(PDFUtils.lw_lft_y);
        position.setUpperRightX(PDFUtils.tp_rgt_x);
        position.setUpperRightY(PDFUtils.tp_rgt_y);
        txtLink.setRectangle(position);
        txtLink.setHidden(true); 
        txtLink.getCOSObject().setInt(COSName.STRUCT_PARENT,1); 
        PDActionURI action = new PDActionURI();
        action.setURI(PDFUtils.link);
        txtLink.setAction(action);
        page.getAnnotations().add(txtLink);
        PDObjectReference pd= new PDObjectReference();
        pd.setReferencedObject(txtLink);
        structureElement.appendKid(pd);
        currentSection.appendKid(structureElement);
        structureElement formBuilder.addContentToParent(COSName.P, null, page, structureElement, PDFUtils.mcid);`
使用上述代码进行标记-

标记文件参考-

寻找下面的结构


“使用adobe找到解决方案”-这是否意味着您已经找到了问题的解决方案?或者你在问如何使用pdfbox实现这个解决方案?哦,这是相当先进的东西。请下载PDFDebugger并激活“显示内部结构”,然后查看PDF的结构树。将其与“好的”PDF进行比较,然后决定要添加的内容。它可能是/StructTreeRoot/K中的某些内容,/StructTreeRoot/ParentTree中的某些内容以及注释本身中的某些内容。OBJR对象的PDFBox类型为PDObjectReference。您还可以使用“doc.getDocumentCatalog().getStructureTreeRoot()”查看结构树。这在源代码下载的PDFMergerUtilityTest.java中做了很多。@mkl-我在问如何使用pdfbox实现该解决方案。@Tilman我已经写了上面的代码来在pdf中标记“Link”,但在辅助功能检查器中失败了。我发现失败的原因是“Link-tag”下面缺少“Link-OBJR”类型标记。我在问如何使用pdfbox在“Link tag”下添加“Link OBJR”类型标记。请参考屏幕截图。我没有一个“好”的文件,所以我不知道和你的文件相比缺少什么。Adobe Professional显示了用户友好的视图,但PDF格式要复杂得多。正如我所写,您可能需要进行3种不同的更改。