PDF toUnicode cmap table 恢复
PDF toUnicode cmap table restore
我有多个没有 'toUnicode' cmap table 的 pdf 文件。缺少 cmap table 限制我从 pdf 文件复制文本。
据我所知,可以在 pdf 文件中添加 'toUnicode' 映射,但在我的情况下,添加静态值不是一个选项,不同的文件具有不同的字形代码。
所以问题如下。是否有可能恢复 'toUnicode' cmap table,也许是在 Ghostscript 的帮助下,或者是否有任何选项?
谢谢。
不,您不能使用 Ghostscript 将 ToUnicode CMap 添加到现有 PDF 文件。
在一般情况下,你根本做不到,除非手动。正如您在问题中指出的那样,将构造不同的文件以使用不同的字符代码->字形映射,这意味着字符代码到 Unicode 映射也将不同。
由于字符代码的选择通常是基于字形在文件中使用的顺序(所以第一个字形是字符代码1,第二个是字符代码2等)你可以看到没有前景确定 'one size fits all' 解决方案。
您可以使用某种 OCR 来扫描呈现的输出,识别每个字形并找到它的 Unicode 代码点。然后您可以通过识别字形的字符代码并将其映射到 Unicode 值来构建 CMap。
然后,您可以将 ToUnicode CMap 添加到 PDF 文件,并使用 ToUnicode CMap 的对象编号更新字体描述符。
Ghostscript 不会为您做任何这些,而且我还没有听说过任何工具可以。
我有多个没有 'toUnicode' cmap table 的 pdf 文件。缺少 cmap table 限制我从 pdf 文件复制文本。
据我所知,可以在 pdf 文件中添加 'toUnicode' 映射,但在我的情况下,添加静态值不是一个选项,不同的文件具有不同的字形代码。
所以问题如下。是否有可能恢复 'toUnicode' cmap table,也许是在 Ghostscript 的帮助下,或者是否有任何选项?
谢谢。
不,您不能使用 Ghostscript 将 ToUnicode CMap 添加到现有 PDF 文件。
在一般情况下,你根本做不到,除非手动。正如您在问题中指出的那样,将构造不同的文件以使用不同的字符代码->字形映射,这意味着字符代码到 Unicode 映射也将不同。
由于字符代码的选择通常是基于字形在文件中使用的顺序(所以第一个字形是字符代码1,第二个是字符代码2等)你可以看到没有前景确定 'one size fits all' 解决方案。
您可以使用某种 OCR 来扫描呈现的输出,识别每个字形并找到它的 Unicode 代码点。然后您可以通过识别字形的字符代码并将其映射到 Unicode 值来构建 CMap。
然后,您可以将 ToUnicode CMap 添加到 PDF 文件,并使用 ToUnicode CMap 的对象编号更新字体描述符。
Ghostscript 不会为您做任何这些,而且我还没有听说过任何工具可以。