为什么此 PDF 似乎正确编码了括号,但使用 pdftotext 或复制粘贴时却不行?

为什么此 PDF 似乎正确编码了括号,但使用 pdftotext 或复制粘贴时却不行?

以下是一些期刊文章的链接:

它们都错误地编码了括号(以及其他字符,例如方括号)。但是,只有在尝试将它们转换为文本或复制粘贴时,这一点才会显现出来。例如,第一篇文章正文的第一行应该是:

Proton exchange membrane fuel cells (PEMFCs) have received

相反,从 Acrobat Reader 复制粘贴时,它

Proton exchange membrane fuel cells PEMFCs have received

当使用“另存为文本”时,它会给出

Proton exchange membrane fuel cells ^CPEMFCs�
have received 

其中,左括号为^C,即 03 ASCII 控制序列,右括号为 Unicode 65533 ,即替换字符,后跟换行符。同样,pdf2txt将其编码为

Proton exchange membrane fuel cells 共PEMFCs兲 have received

(Unicode 20849 和 20850)并将pdftotext其编码为

Proton exchange membrane fuel cells ͑PEMFCs͒ have received

(Unicode 849 和 850)。

输出中还有 Unicode 851 ( ͓)、852 ( ͔)、1003 (ϫ)、1011 (ϳ)、1015 (Ϸ)、8217 (')、8211(–)、8722(−)、64257 (fi)、64258 (fl) 和控制字符 Ctrl-L (ASCII 12) pdftotext。我认为其中一些可以很容易地标准化为 ASCII,但其中一些需要手动映射。

我的问题是:

  1. 解决这个问题的最佳方法是什么?我见过一些类似的问题,包括使用脚本来替换处理错误的字符,但设置映射并不简单,而且它不能修复 PDF。

  2. 为什么不同的 PDF 阅读器和 PDF 转文本实用程序会给出如此不同的结果?

pdfinfo以下是和的输出pdffonts

Title:          
Subject:        
Keywords:       
Author:         
Creator:        XPP
Producer:       Acrobat Distiller 6.0.1 (Windows)
CreationDate:   Thu Mar 23 12:07:23 2006
ModDate:        Sun Nov  4 12:48:02 2012
Tagged:         no
Pages:          6
Encrypted:      no
Page size:      657 x 855 pts
File size:      266467 bytes
Optimized:      no
PDF version:    1.4

name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
Helvetica                            Type 1            no  no  no      89  0
Helvetica-Oblique                    Type 1            no  no  no     109  0
Helvetica-Bold                       Type 1            no  no  no      88  0
LFNLKJ+Times-Bold                    Type 1C           yes yes no      63  0
LFNLLK+Times-Italic                  Type 1C           yes yes no      64  0
LFNLMK+Times-Roman                   Type 1C           yes yes no      65  0
LFNLML+MathematicalPi-Three          Type 1C           yes yes no      66  0
LFNLMM+MathematicalPi-One            Type 1C           yes yes no      67  0
LFNLMN+Universal-GreekwithMathPi     Type 1C           yes yes no      72  0

答案1

答案就在“uni”列中:这些字体(特别是括号中使用的字体)缺乏与 Unicode 的明确映射。识别某个任意符号的最正确代码点是一个难题。

相关内容