我需要生成的 PDF 中每张图片都带有“alt”文本,这样屏幕阅读器才能将 alt 文本读给有视力障碍的用户。我理解,实际上,只需将“alt”文本作为标题或标题的一部分就足够了,但我们正在处理政府的法律要求,如果能选中该框,那就简单多了。
有人做过这个吗?任何帮助都非常感谢。谢谢。
答案1
阅读 PDF 规范时,我曾想过,
\documentclass{article}
\usepackage{graphicx}
\usepackage{accsupp}
\pagestyle{empty}
\begin{document}
123
\BeginAccSupp{method=plain,Alt={Hello}}%
\includegraphics{img.png}%
\EndAccSupp{} %
456
\BeginAccSupp{method=plain,ActualText={world},space}%
\includegraphics{img.png}%
\EndAccSupp{} %
789
\end{document}
可以。但是,AR10/Win 读取:
area code one two three four five six seven eight nine
无Hello
和world
。
因此,我对用于分析实际有效的 PDF 文件很感兴趣。
沃纳 (Werner) 的叠加文本方法
- 在我的实验中,文本需要位于图像的顶部,否则 PNG 图像(不透明)会抑制被图像覆盖的文本(AR10/Win)。
- 透明度用于使文本不可见。
- 此外,我还缩放了文本以适应图像的宽度,以避免较长的文本描述超出页面。但进一步的实验和使用不同的屏幕阅读器进行测试将有助于获得最佳策略。
示例文件:
\RequirePackage{cmap}% to get the ligature `fi' right
\documentclass{article}
\usepackage{color}
\usepackage{graphicx}
\usepackage{transparent}
\newsavebox\imagebox
\newcommand*{\imagewithtext}[3][]{%
\sbox\imagebox{\includegraphics[{#1}]{#2}}%
\usebox\imagebox
\llap{%
\resizebox{\wd\imagebox}{\height}{%
\texttransparent{0}{#3}%
}%
}%
}
\begin{document}
first \imagewithtext{img.png}{Hello world} last
\end{document}
答案2
您可以将 PDF 工具提示与该pdfcomment
包一起使用。然后读取“alt”文本(又名工具提示)!
\documentclass{article}
\usepackage{graphicx}
\usepackage{pdfcomment}
\pagestyle{empty}
\begin{document}
one two three
\pdftooltip{\includegraphics{img.png}}{This is the ALT text}%
four five six
\end{document}
答案3
如果您要创建一个与常规版本不同的可访问版本,以下文本/图形重叠的基本用法可使用 Adobe Reader 提供适当的阅读:
\documentclass{article}
\usepackage{xcolor}% http://ctan.org/pkg/xcolor
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\makeatletter
\newcommand{\imagewithtext}[3][]{% \imagewithtext[<option>]{<text>}{<image>}
\rlap{#2}% Print <text> in zero-width, right-overlap box
\includegraphics[#1]{#3}% Print <image> with <options>
}
\makeatother
\begin{document}
There is a \imagewithtext[width=2em]{kitty}{tiger} in the brush.
\end{document}
AR 拾取并读取There is a kitty in the brush
。根据使用的图像,这些文本要么可见,要么不可见。可以重新定义\imagewithtext
为吞食#2
(或提供的<text>
)。