【问题标题】:Embedded fonts in PDF: copy and paste problemsPDF 中的嵌入字体:复制和粘贴问题
【发布时间】:2015-06-20 10:14:38
【问题描述】:

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

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

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

  • 在 Microsoft Word 中安装此类字体可以解决问题吗?
  • 如果是这样,我可以从哪里获得甚至创建我需要的字体子集?
  • 如果没有,我该如何解决这个问题?

【问题讨论】:

    标签: pdf fonts ms-word acrobat


    【解决方案1】:

    您应该首先在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 中安装此类字体可以解决问题吗?
    • 很可能:。 (如果我自己无法访问相关 PDF,我无法给出明确的答案。)
    • 如果是这样,我可以从哪里获得甚至创建我需要的字体子集?
    • 您可以从 PDF 本身中提取子集字体。 (有趣的是,my most popular StackOverflow answer 正是在处理这个问题——我不知道为什么人们似乎如此疯狂地从 PDF 文件中提取字体而不是出于调试目的......)
    • 如果没有,我该如何解决这个问题?
    • 除了手动执行此操作外,没有其他解决方案。

    更新

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

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

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

    【讨论】:

    • 嗨! @KurtPfeifle 首先,感谢您如此彻底地回复;现在,我是一个真正的新手,所以如果您能提供一些分步指南,我将非常感激。如何下载适用于 Windows 的 XPDF 包并使其工作?另外,当您说“除了手动执行此操作之外没有其他解决方案”时,您的确切意思是什么?对不起,我可能使用的非特定术语。
    • @GEORGEJUNG:抱歉,想不出比这个更好的分步指南。您可能需要搜索并通过 my other SO answers 来解决类似问题 - 然后您可能会发现此处未讨论的文本提取问题的其他方面。
    • @GEORGEJUNG:“手动执行”是指选择两件事:(1) 手动从 PDF 复制文本(键入它;难度级别:简单),或(2) 手动编辑 PDF 并向其中添加一个有效的 /ToUnicode 对象(需要大量特定技能;难度级别:非常难)。
    • 我下载了rar文件,但是执行pdffonts.exe后,只是出现了DOS框的屏幕截图……那我现在应该怎么做呢?
    • @GEORGEJUNG:这不是 .rar,而是 .zip 文件。你解压它,将pdffonts.exe 复制到某个方便的目录。然后打开一个cmd.exe (= "DOS 框") 窗口。在此窗口中,将目录更改为您的 pdffonts.exe 所在的位置。然后执行pdffonts.exe c:\path\to\your\pdf.pdf
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      在 Microsoft Word 中安装这样的字体可以解决问题吗?

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

      如果没有,我该如何解决这个问题?

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

      解决方案:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-31
        • 2010-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多