PDFBox - 可访问的 PDF - 如何根据可访问性指南检查 PDF 标签是否具有属性

Sac*_*n G 5 java pdf accessibility pdfbox

需要根据辅助功能指南检查 PDF 标签是否具有属性。例子:

  • H1 - 验证 PDF 中是否存在 H1
  • Image(Figure Tag) - 验证 image\figure 有一个 Alt 文本
  • 语言 - 验证语言属性已设置,以便屏幕阅读器可以正确读取。对于西班牙语和英语文档,应更新各自的语言代码
  • 表 - 访问表对象并验证表结构是否正确(标题列与行列匹配等)

到目前为止,我能够:

  • 提取元数据并验证文档具有正确的标题、主题和生产者信息 PDDocument.getDocumentInformation().getMetadataKeys();
  • 通过检查PDDocument.getDocumentCatalog().getMarkInfo().isMarked();标志验证 PDF 是否可访问

为了访问标签,我尝试了以下选项:

  • getDocumentCatalog().getAcroForm() 返回空
  • PDDocument.getDocumentCatalog().getPages().get(0).getAnnotations(); 返回空
  • 我尝试循环,PDDocument.getDocumentCatalog().getStructureTreeRoot().getKids()但它只返回 1 个StructElem类型的对象

Accessible PDF 的创建是使用 OpenText 完成的,因此开发团队不了解 PDFBox。我在这里迷失了如何访问标签/对象(使用 MarkedContent 或其他东西)。

请建议如何提取单个对象(标签),例如 P、H1、表格、图形/图像并验证它们的属性。注意:这些属性的手动验证是使用 Adob​​e Acrobat Pro 执行的

Mon*_*han 3

根据https://issues.apache.org/jira/browse/PDFBOX-7,您似乎可以使用 PDFMarkedContentExtractor 来获取您需要的信息。