PDF 中的嵌入字体:复制和粘贴问题

Embedded fonts in PDF: copy and paste problems

当尝试从嵌入了一些字体集的 PDF 文档复制并粘贴到 MS word 文档时,结果无法辨认。

几个符号被改变甚至消失。

使用 Adob​​e Acrobat,我可以检查嵌入了哪些特定字体。

您应该首先在 pdffonts 实用程序的帮助下检查 PDF 文档的字体。这是 XPDF package for Windows 的一部分,无需安装即可使用,只需从 DOS 框即可。

为了成功地从 PDF 中提取文本(或复制'n'粘贴),字体应该使用 标准 编码(而不是 Custom一个),并且它应该在 PDF 中有一个与之关联的 /ToUnicode table。

pdffonts returns 关于您的 PDF 使用的字体的一些基本信息项。

示例输出:

$ pdffonts -f 3 -l 5 sample.pdf
  name                      type          encoding     emb sub uni object ID
  ------------------------- ------------- ------------ --- --- --- ---------
  IADKRB+Arial-BoldMT       CID TrueType  Identity-H   yes yes yes     10  0
  SSKFGJ+ArialMT            CID TrueType  Custom       yes yes no      11  0

上面的命令要求页面范围3(首先检查)到5[=中使用的字体83=](要检查的最后一页)。

在上述情况下,两种使用的字体都嵌入为 子集 (由其名称的 XYZABC+ 前缀以及 yes embsub 列)。

字体 SSKFGJ+ArialMT 使用自定义编码,但 PDF 中没有此字体的 /ToUnicode,如标题为 的列的 no 条目所示uni

因此,提取使用此字体显示的文本并不容易(提取需要手动逆向工程——但您也可以只 "read" PDF 页面)。

如果您使用简单的文本文件作为目标(而不是 MS Word 文档),您应该首先检查文本的复制'n'粘贴是否有效。如果没有,您可能已经忘记了 MS Word...


  • Would installing such fonts in Microsoft Word work it out?
  • 很有可能:。 (如果我自己无法访问相关 PDF,我无法给出明确的答案。)
  • If so, where can I get or even create those subsets of the fonts I need?
  • 您可以从 PDF 本身中提取子集字体。 (有趣的是,my most popular Whosebug answer 正好解决了这个问题——我不知道为什么人们似乎如此疯狂地从 PDF 文件中提取字体,而不是为了调试目的...)
  • If not, how could I solve this problem?
  • 除了手动执行此操作外没有其他解决方案。

更新

不幸的是,您无法通过 Acrobat 或 Adob​​e Reader 获得关于 PDF 使用的字体的完全相同的信息。你可以通过菜单->文件->属性...得到的是

  • 字体名称,
  • 子集信息(但不是用于子集字体名称的前缀),
  • 编码和
  • 字体类型。

但是您没有得到有关 /ToUnicode table 存在的信息。

我的解决方法是将 PDF 保存为无损或接近无损的图像,例如 .tiff 格式,然后从该图像和 运行 OCR 创建一个新的 PDF。因此,我在 PDF 图像中没有丢失 clarity/sharpness,并获得可以复制和粘贴的准确 OCR 内容。而且,是的,很多人对受保护的 PDF 的屏幕截图做了类似的事情来抓取所有文本(无需重新输入)。简单的非专家脚本(例如 Tornado 的 "Do It Again" 免费软件)和 PDF 生成软件可以轻松快速准确地处理数百页(至少与来自相对高分辨率图像的图像 OCR 一样准确 - 不是您没有放大或以相对于原始文档极低的空间分辨率捕获的文档的屏幕截图)。

Would installing such fonts in Microsoft Word work it out?

不一定,这是因为很多时候 pdf 中不存在有关字体的信息。换句话说,尽管 reader 可以从二进制文件中很好地呈现它,但 ascii 等价物(如果存在字体数据则可能)不可用。

If not, how could I solve this problem?

由于问题在于不明确的 pdf 标准(允许删除字体信息),因此最佳做法是 OCR。

Solution:

当我 运行 遇到类似问题时,这些是我执行的步骤

  1. 我将整个 pdf 文件转换为另一个 pdf(图像为 每张幻灯片)。 (我发现最好先转换每张幻灯片 使用 Adob​​e Acrobat 转换为 tiff。然后会重新组合所有这些争端 制作一个单独的 pdf)。目的是得到一个纯净的图像 (二进制)基于 pdf。
  2. 然后,运行通过Adobe内置的OCR Acrobat('Enhance' 功能)。这使 Adob​​e 生成一个新的集合 元数据包括所有相关的字体信息。保存此 PDF
  3. 所以,现在我有一个可搜索的 pdf。