[iText的Alt-Text添加示例代码不适用于使用Acrobat标记的PDF

问题描述 投票:2回答:1

我正在处理PDF辅助功能,即在标记的PDF中添加替代文本。我在Add alternative text for an image in tagged pdf (PDF/UA) using iText处获得了相同的示例代码。令我感到非常兴奋的是,我的任务将在很短的时间内结束,而没有太多的研发工作

根据代码创建了一个Java项目,当我执行它时,该代码对于iText中使用的输入PDF来说是完美的。这是iText的样本输入PDF:no_alt_attribute.pdf。但是坏处是一样的source-code对于使用Acrobat的PDF Tagged不起作用

问题所在:

 // This line works and returns RootElement
    PdfDictionary structTreeRoot = catalog.getAsDict(PdfName.STRUCTTREEROOT);

 // --> This line always returns NULL,
 //     Instead of returning the child elements of RootElement
    PdfArray kids = structTreeRoot.getAsArray(PdfName.K);
 // --> As per the structure Kids are present

比较两个PDF的结构,以下是我的观察:

  1. 标签结构-在两个PDF Tagging Structure中完全相同
  2. 内容结构-几乎相同,但由我创建的PDF中几乎没有其他内容。Content Structure
  3. 标签树结构-与标签几乎相同,但是发现主要区别:iText的PDF标签标记为/T:StructElem,而在MY-PDF中找不到(即使重新标记也没有运气)。 Tag Tree Structure

已通过我们提供的各种带标签的PDF进行了验证,并且它们都相似(没有/T:StructElem),这些PDF均经过验证并通过了可访问性合规检查。

[关于如何使此源代码与我们现有的PDF一起使用,或者在Acrobat中进行标记时,有一种自动在PDF中添加缺失的/T:StructElem的方法,需要一些思考。

任何帮助将不胜感激!

如果需要更多信息,请告诉我。

注意:我仍然不确定添加此/T:StructElem是否可行,因为PDF是在PAC中传递的。如果这确实是一个问题,那么这些PDF将不会通过验证,对吗?但这是我在这两个PDF之间发现的唯一区别。

PS:我使用的Acrobat版本是“ Adob​​e Acrobat(Pro)DC”

-谢谢,SaRaVaNaN

pdf itext accessibility acrobat
1个回答
0
投票

Bruno在referenced answer中的代码不会遍历整个结构树,因为他没有实现K内容的所有情况。结构元素K条目是这样指定的:

此结构元素的子元素。此项的值可以是以下对象之一,也可以是由以下一个或多个对象以任意组合组成的数组:[...]

(ISO 32000-2,表355-结构元素字典中的条目)

但是,布鲁诺的代码始终将值假定为数组:

PdfArray kids = element.getAsArray(PdfName.K);

((很可能他只考虑了相关PDF的结构树来实现了该代码。)

因此,替换

PdfArray kids = element.getAsArray(PdfName.K);
if (kids == null) return;
for (int i = 0; i < kids.size(); i++)
    manipulate(kids.getAsDict(i));

通过类似

PdfObject kid = element.getDirectObject(PdfName.K);
if (kid instanceof PdfDictionary) {
    manipulate((PdfDictionary)kid);
} else if (kid instanceof PdfArray) {
    PdfArray kids = (PdfArray)kid;
    for (int i = 0; i < kids.size(); i++)
        manipulate(kids.getAsDict(i));
}

由于您没有共享示例文档,因此我无法测试代码。如果有问题,请分享一个示例PDF。

© www.soinside.com 2019 - 2024. All rights reserved.