【发布时间】:2019-05-25 16:03:07
【问题描述】:
需要检查 PDF 标签是否具有符合辅助功能指南的属性。 例子:
- H1 - 验证 PDF 中是否存在 H1
- 图像(图形标记) - 验证图像\图形有替代文本
- 语言 - 验证语言属性是否已设置,以便屏幕阅读器能够正确阅读。对于西班牙语和英语文档,应更新各自的语言代码
- 表 - 访问表对象并验证表结构是否正确(标题列与行列匹配等)
到目前为止,我能够:
- 提取元数据并通过
PDDocument.getDocumentInformation().getMetadataKeys();验证文档具有正确的标题、主题和生产者信息 - 通过检查
PDDocument.getDocumentCatalog().getMarkInfo().isMarked();标志来验证 PDF 是否可访问
要访问标签,我尝试了以下选项:
-
getDocumentCatalog().getAcroForm()返回 Null -
PDDocument.getDocumentCatalog().getPages().get(0).getAnnotations();返回 Null - 我尝试循环遍历
PDDocument.getDocumentCatalog().getStructureTreeRoot().getKids(),但它只返回 1 个StructElem类型对象
可访问 PDF 的创建是使用 OpenText 完成的,因此开发团队不了解 PDFBox。 我在这里迷失了如何访问标签/对象(使用 MarkedContent 或其他东西)。
请建议如何提取单个对象(标签),例如 P、H1、表格、图形/图像并验证它们的属性。 注意:这些属性的手动验证是使用 Adobe Acrobat Pro 执行的
【问题讨论】:
-
请分享一个包含这些标签的 PDF 并 ping 我。你要搜索的是结构树,也可以用PDFDebugger查看。
-
@TilmanHausherr 感谢您的回复。不幸的是,我无法共享我必须验证的 PDF。这是示例 PDF。在下面的 PDF 中,我需要验证 Fox 和 dog 图像是否具有正确的替代文本。 gitlab.itextsupport.com/itext7/samples/raw/develop/publications/… 在下面的 PDF 中,我需要验证表结构是否正确。就像它有 TH、TBody 标签一样。每个 TD 都被映射。 gitlab.itextsupport.com/itext7/samples/raw/develop/publications/…
-
我看了看……这比我想象的要棘手,抱歉。如果你用 PDFDebugger 查看它,你就会明白为什么 :-(
-
没问题,感谢您的检查。之前没用过PDFDebugger,来看看吧。
-
@SachingG 你有这方面的线索吗?另外,
PDDocument.getDocumentCatalog().getStructureTreeRoot().getKids() but its returning only 1 StructElem type object你有没有找到一种方法来迭代这个StrucElem。
标签: java pdf accessibility pdfbox