什么原因导致生成的 PDF 文档中的文本无法正确复制?

什么原因导致生成的 PDF 文档中的文本无法正确复制?

我想知道为什么有些从 LaTeX 代码编译的 PDF 文档无法正确复制其文本,也就是说,您得到的是无意义的文本?例如,这个 pdf 文档(我没有它的 LaTeX 代码)。

答案1

PDF 规范允许这样做 - 显示与可检索内容不同的内容。randtext包裹或许就是一个很好的例子。它提供了\randomize{<text>}(从包装文档

...排版一个框,在纸上看起来像<text>,但其字母实际上被按随机顺序排列,因此不能直接从文件中复制。

另一个例子是accsupp包裹它允许指定要提取的替代文本,而不是使用分组显示的文本:

\BeginAccSupp{ActualText={<copy>}}<typeset>\EndAccSupp{}

有关示例,请参阅如何使 PDF 预览器中的文本复制忽略 lineno 行号?

这样做的动机肯定是出于安全性,正如randtext文档中所述:

这个奇怪的宏的功能是混淆电子邮件地址,比如在线发布的 PDF 文档中的地址,以便人类读者可以看到预期的地址,但电子邮件地址收集者和垃圾邮件机器人无法确定该地址。

答案2

也许,更有用的是问如何避免这样的麻烦。如果是这样,那么 awswer 就是加载cmap包。如果文本包含西里尔字母,这是绝对必要的。但是,据我所知,cmap如果源文本采用 UTF8 编码,则不需要。

相关内容