重新审视从 LaTeX 生成结构化 PDF

重新审视从 LaTeX 生成结构化 PDF

我正在尝试从 pdftex (Tex Live 2013) 生成结构化或“标记”PDF,该 PDF 通过了 Adob​​e Acrobat 中的标记自动测试。这些测试是事实上文档可访问性的指标,世界各地的大学、政府机构和其他机构通常要求已发布的文档具有该指标。

要测试文档的可访问性/标记,请尝试以下操作:

  1. 在 Acrobat Reader 中打开 PDF
  2. ‘文件 -> ‘文档属性’ -> ‘描述’
  3. 在“高级”下,您将看到一个字段“标记的 pdf”。理想情况下,它应该显示“是”。但事实并非如此 :(

在此处输入图片描述

问题:有谁知道有什么方法可以直接从 LaTeX 创建通过 Acrobat 的“标记 PDF”测试的 PDF 吗?

理想的解决方案是可以从 latex 文档的序言中调用一两个包。我想要一个对作者来说非常省力的东西,因此可以很容易地与现有的工作流程

笔记:过去曾讨论过这个问题(见右侧的标签和链接),但截至 2014 年 5 月,尚未有明确的解决方案。现有的大部分讨论都来自 2012 年或更早(见如何创建支持通用辅助功能和重排的标记 PDF?),所以我想看看我们是否可以开始这个讨论。

为什么这不是一个重复的问题:当我在 2013 年 7 月第一次发布这个问题时,它被标记为重复2010 年的一个问题。答案引用了 TUG 2010 上的一个演示。那个演示基本上说“我们正在努力”,而不是一个允许我实施解决方案的答案。

因为现在是 2014 年,所以我认为可以合理地预期:

  1. 通过新的软件包或核心 LaTeX 的更新,该领域取得了新的进展
  2. 试图遵守第 508 条将要求人们想出解决方案。这是一项相对较新的要求,因此解决方案可能自 2010 年以来发生了变化
  3. 通常用于判断合规性的软件(Adobe Acrobat)已经多次更改,因为这个问题没有得到回答
  4. 解决可访问性的软件包已经被提出,但并未得到广泛使用,甚至消失了(例如,可访问性软件包,http://www.babs.gmxhome.de/da_ergeb.htm),因此有必要用全新的视角重新审视这个问题。

答案1

Accessibility套餐使用体验

accessibility.sty从以下网址下载了样式文件Babette Schalitz 的网站. 此文件在 LPPL 许可下可用。

在我的序言中使用\usepackage[tagged]{accessibility}允许我生成一个基本的标记 PDF 文件,该文件通过了 Adob​​e Acrobat 中的测试。但是,如果我需要在第一页使用罗马数字,该包就不起作用。这个错误似乎是因为accessibility.sty使用显示的页码来构建文档标记结构。

更新Accessibility软件包

为了修复编号问题,我添加了计数1到包并替换了accessibility.sty 中的部分内容\pageref。我将此修改后的文件命名为\count1accessibility-meta.sty我暂时发布到 GitHub。该软件包现在似乎可以编译文章和报告,并且输出在 Acrobat 中显示为“标记”。

确保\usepackage[tagged]{accessibility}\usepackage[tagged]{accessibility-meta}几乎是序言中的最后一项。如果发生 'tex 计数器溢出,请尝试注释掉代码的各个部分。我发现标记经常会崩溃,尤其是在复杂文档中。多次编译文档,以便页码和文本或浮动的位置稳定下来,并正确生成标记。

其他步骤

我还采取了以下措施数据库建议:

  1. 升级到 TexLive-2015。
  2. 添加\pdfinterwordspaceon到序言中以修复文本中字间间距的丢失(需要 TexLive-2014 或更高版本)。
  3. 添加cmap包来修复将字符映射到unicode的问题。

测试和反馈

我使用 TexLive 2015、cmap包、\ pdfinterwordspaceon以及修改后的可访问性类制作了一个测试 PDF。这似乎是“标记的”。PDF 可在此处获取

由于我不经常处理带标签的文档,因此很可能我没有对生成的文档进行足够详细的测试。我很想知道此 PDF 是否通过了 Acrobat 的预检测试,以及accessibility-meta.sty文件是否可以在其他文档上运行。我特别希望听听任何专业处理带标签出版物的人的反馈。

Babett Schalitz 应得所有荣誉,因为她制作了原始accessibility.sty文件,本文正是accessibility-meta.sty基于此。如果没有她的努力,我就不会有这个机会。

2015 年 8 月更新:我正在努力accessibility-meta.sty加入 CTAN。请随时在 github 存储库上注册问题,或提供改进建议。


2020 年 6 月更新:

2019 年,我联系了 Babett,获得了原始accessibility软件包的文件;她还允许我接管软件包的维护工作。我整理了accessibility足够多的内容,将其提交给 CTAN,但没有更新功能。

发布accessibility到 CTAN 表明,不幸的是,现在它存在很多问题。当它在 2010 年代初开发时,它运行得更好,而且它似乎对其他软件包的开发非常敏感。它不再可靠地编译基本的 MWE。

因此,我不再认为它accessibility适合用途,并且我将联系 CTAN 以研究将其从 CTAN 中删除(如果可能的话)。

不过,我将把代码留在https://github.com/AndyClifton/accessibility。如果任何读者具有编码技能并且愿意为该软件包做出贡献,请在那里留下一个问题。

答案2

这个问题有很多投票,但还没有得到答案。所以我给出了一个 ConTeXt 解决方案。要创建带标签的 PDF,只需添加:

\setuptagging[state=start]

在文档顶部。例如:

\setuptagging[state=start]

\starttext
\startsection
    [title={A section title}]
  \input ward
\stopsection
\stoptext

然后,pdfinfo test.pdf得到:

标题:测试
创建者:ConTeXt - 2014.04.24 09:39
制作人:LuaTeX-0.79.1
创建日期:2014 年 5 月 30 日星期五 11:58:32
修改日期:2014 年 5 月 30 日星期五 11:58:32
标签:是
形 式: 无
页数:1
加密:否
页面尺寸:595.276 x 841.89 pts (A4)
页面腐烂:0
文件大小:10992 字节
已优化:否
PDF 版本:1.6

相关内容