【发布时间】:2015-06-20 10:14:38
【问题描述】:
当尝试从嵌入了一些字体集的 PDF 文档中复制并粘贴到 MS Word 文档中时,结果难以辨认。
几个符号被改变甚至消失。
使用 Adobe Acrobat 我可以检查嵌入了哪些特定字体。
- 在 Microsoft Word 中安装此类字体可以解决问题吗?
- 如果是这样,我可以从哪里获得甚至创建我需要的字体子集?
- 如果没有,我该如何解决这个问题?
【问题讨论】:
当尝试从嵌入了一些字体集的 PDF 文档中复制并粘贴到 MS Word 文档中时,结果难以辨认。
几个符号被改变甚至消失。
使用 Adobe Acrobat 我可以检查嵌入了哪些特定字体。
【问题讨论】:
您应该首先在pdffonts 实用程序的帮助下检查您的PDF 文档的字体。这是 XPDF package for Windows 的一部分,无需安装即可使用,只需从 DOS 框即可。
为了成功地从 PDF 中提取文本(或复制粘贴),字体应该使用 标准 编码(而不是 Custom 编码),并且应该具有在 PDF 中与之关联的 /ToUnicode 表。
pdffonts 返回一些关于您的 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(最后一页检查)。 p>
在上述情况下,两种使用的字体都嵌入为子集(由它们名称的XYZABC+-前缀以及@987654333 中的yes 表示@ 和 sub 列)。
字体SSKFGJ+ArialMT 使用自定义编码,但PDF 中没有此字体的/ToUnicode,如标题为uni 的列的no 条目所示。
因此,提取使用此字体显示的文本并不容易(提取需要手动逆向工程——但您也可以只“阅读”PDF 页面)。
如果您使用简单的文本文件作为目标(不是 MS Word 文档),您应该首先检查是否可以复制“n”粘贴文本。如果没有,您可能已经忘记了 MS Word...
- 在 Microsoft Word 中安装此类字体可以解决问题吗?
- 如果是这样,我可以从哪里获得甚至创建我需要的字体子集?
- 如果没有,我该如何解决这个问题?
很遗憾,您无法通过 Acrobat 或 Adobe Reader 获得关于 PDF 使用的字体的完全相同的信息。您可以通过菜单 -> 文件 -> 属性...获得的是
但是您没有得到关于存在/ToUnicode 表的信息。
【讨论】:
/ToUnicode 对象(需要大量特定技能;难度级别:非常难)。
pdffonts.exe 复制到某个方便的目录。然后打开一个cmd.exe (= "DOS 框") 窗口。在此窗口中,将目录更改为您的 pdffonts.exe 所在的位置。然后执行pdffonts.exe c:\path\to\your\pdf.pdf。
我的解决方法是将 PDF 保存为无损或接近无损的图像,例如 .tiff 格式,然后从图像创建新的 PDF 并运行 OCR。因此,我不会失去 PDF 图像的清晰度/清晰度,并获得可以复制和粘贴的准确 OCR 内容。而且,是的,很多人对受保护的 PDF 的屏幕截图做了类似的事情,以获取所有文本(无需重新输入)。简单的非专家脚本(例如 Tornado 的“Do It Again”免费软件)和 PDF 生成软件可以轻松快速准确地处理数百页(至少与来自图像的 OCR 可以来自相对高分辨率的图像一样准确 - 不是您未放大的文档的屏幕截图或以相对于原始文档极低的空间分辨率捕获的文档)。
【讨论】:
在 Microsoft Word 中安装这样的字体可以解决问题吗?
不一定,这是因为很多时候有关字体的信息并不存在于 pdf 中。换句话说,尽管阅读器可以从二进制文件中很好地呈现它,但 ascii 等价物(如果存在字体数据则可能)不可用。
如果没有,我该如何解决这个问题?
由于问题在于不明确的 pdf 标准(允许删除字体信息),最佳做法是 OCR。
解决方案:
当我遇到类似问题时,这些是我执行的步骤
【讨论】: