pdf复制文字是乱码PDF中的字时,有一些字乱码

推荐到广播
584500 人聚集在这个小组
(HotOrNot)
第三方登录:为什么从由方正书版的大样文件打印而成的 pdf 中复制出来的标点符号都是乱码?
我们的杂志是别人给排版,完了以后给我们大样文件我们再打印成pdf,比较蛋疼的问题是我们从打印出来的pdf中复制文字的话,标点符号(准确说应该是非汉字)都是乱码,但显示是没有问题的。我也见过排得很好的pdf(当然我不知道人家是用什么排的,是不是方正且pdf是怎么转出来的),非汉字复制起来没压力。我猜测是和这些符号的字体有关系?可是为什么看可以看复制出来就乱码呢?谢谢!
方正书版对西文的处理一直都是个奇葩,我曾经深入地研究过。书版生成的大样,或者也叫二扫文件,无论西文还是汉字,都是用双字节方式来存储,也就是取这个字符的 748 码,然后将高低字节倒过来,储存在大样文件里。例如汉字“啊”编码是 B0A1H,在早期书版 6.x 版本生成的 S2 文件中,储存时就是 A1H、B0H 两个字节,在这两个字节前面又有两个字节,来表示这个“啊”字左边缘的水平坐标,这样的四个字节一个一个串起来,在它们的最前面又有专门的标记表示这一串字符共同的垂直坐标、以及字体等信息,就构成了版面上的一行,许多个这样的一行合在一起,就成了一整页的文字了。那么对于西文如何处理呢?前面说到,任何字符都是双字节方式存储,所以不可能是存储半角 ASCII 编码,而是这个字母对应的全角国标码。因此字母“A”的编码是 A3C1H,存储时也是 C1H、A3H 两个字节,剩下的步骤也和前面的“啊”字一样。这种页面描述语言被称为 BDPDL,在书版 9.0 以前的版本(也就是 DOS 下输入 “HG4”来运行的版本)被用来直接照排输出。接下来用一次具体操作来说明。下面的小样:它的大样结果(图中以 11.0 版本、S10 为例):它的大样结果(图中以 11.0 版本、S10 为例):用 6.02(方正网站至今仍可下载到,未加密,用 DOSBox 可运行使用)排版,将生成的 S2 大样用十六进制编辑器打开,内容如下:用 6.02(方正网站至今仍可下载到,未加密,用 DOSBox 可运行使用)排版,将生成的 S2 大样用十六进制编辑器打开,内容如下:0X | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
---+------------------------------------------------
00 | 03 80 F8 11 03 80 BE 19 03 80 00 00 03 80 01 00
10 | 01 80 A8 00 02 80 A5 10 44 00 A1 B0 B0 00 F9 D7
20 | 01 80 4A 01 02 80 A5 10 01 80 4E 01 02 80 A5 10
30 | 42 00 C1 A3 95 00 C2 A3 D8 00 C3 A3 1E 01 C4 A3
40 | 6A 01 F7 A3 BB 01 F8 A3 F5 01 F9 A3 2C 02 FA A3
50 | 01 80 4A 01 02 80 A5 10 01 80 EC 01 02 80 A5 10
60 | 01 80 F0 01 02 80 A5 10 42 00 80 A0 92 00 81 A0
70 | DE 00 82 A0 22 01 83 A0 73 01 B0 A0 C6 01 B1 A0
80 | FB 01 B2 A0 37 02 B3 A0 01 80 EC 01 02 80 A5 10
90 | 72 80 00 00 04 80 01 00 05 80 00 00
可以看到:偏移 18H 处开始的四个字节 44H、00H、A1H、B0H 表示汉字“啊”,水平坐标 0044H,十进制为 68;偏移 1CH 处开始的四个字节 B0H、00H、F9H、D7H 表示汉字“座”,水平坐标 00B0H,十进制为 176;两个汉字都是五号字,水平坐标之差为 108。因为王选教授早期开始研制照排系统时使用 742 dpi 的输出设备,五号字就恰好为 108×108 尺寸的点阵,这个习惯一直延续了下来。同理,偏移 30H 处开始的四个字节表示第二行的“A”,后面四个字节表示“B”……2CH、02H、FAH、A3H 表示“z”。但是,紧接着一个问题就出现了。大样中第三行开头的字符也是“A”,为什么在 S2 文件后面找不到 C1H、A3H 这两个字节呢?其实它的数据位于偏移 68H 处开始的四个字节:42H、00H、80H、A0H。这个“A”只不过字体换成了白斜体,为什么它的编码会变成 A080H,而不是 A3C1H 呢?这里就要引出一个书版早期版本对不同字体的西文的处理方法。书版 6.x 和以前的版本西文字体比较少(10 款左右),按照 748 编码方案,整个符号库的编码空间从 8580H 开始,一直到 ADFEH,在这数千个码位中放置了花边、棋牌、乐谱、各种数字以及数学符号等各种非汉字字符,然而还是剩下很多空位,当时为了方便,就把白正体以外的西文字母放到这些空的码位中去了。例如 A080H~A0EBH 放置白斜的拉丁、希腊字母,A180H~A19DH 放置黑正、方头黑(FH,7.0 和以后的版本取消了此字体)、白斜的数字,A980H~A9E8H 放置黑正、黑斜的拉丁字母,等等。当时的书版功能实在还很弱,弱到什么程度?中文字体无论怎么换,标点符号的字体都不会跟着变;俄文只有白正一种字体;另外,只有白正和黑正可以右旋 90°排版,其他西文字体都不行,为什么?看了下面这张图就知道了。这种做法确实比较草率,但当时西文字体少,用一个字库的全部码位来储存多种西文字体完全够用,另外大样中只需要储存汉字字体是哪种,而不需要记录西文字体是哪种(反正怎么换都当成白正),处理起来也方便。这种做法确实比较草率,但当时西文字体少,用一个字库的全部码位来储存多种西文字体完全够用,另外大样中只需要储存汉字字体是哪种,而不需要记录西文字体是哪种(反正怎么换都当成白正),处理起来也方便。但是到了书版 7.0 版本,这个方法就不行了。7.0 的西文字体扩充到 70 多种,各种汉字字体都有自己的标点,俄文也不再只有白正体了。符号也多了几百个,不得不把 A0H~A5H 这几个区的低字节拓宽到 00H~FFH 来放置这些新增的符号,原有的几千个码位显然放不下所有西文字体的各种字符,所以不能再是一个字库放多种字体,必须改成一个字体用一个字库了。CID 字库中关于 7.0 白正的字库有以下几个:E-BZ7:数字和拉丁字母F-BZ7:希腊文、西里尔文、圈码等O7:字体不会变的符号,如数学符号等但是这时候出现了一个我自己都解释不了的现象,那就是,数字和拉丁字母不再像之前那样取全角国标码来存储,而是移到了 A0H 区去了:从书版 7.0 开始,到后来的 9.x 的 S92,再到现在
的 S10,都采用这种做法。为什么要这样去处理我也弄不清原因,但可以肯定的是,这个做法是导致 PDF 文件出现乱码的可能原因之一。从书版 7.0 开始,到后来的 9.x 的 S92,再到现在
的 S10,都采用这种做法。为什么要这样去处理我也弄不清原因,但可以肯定的是,这个做法是导致 PDF 文件出现乱码的可能原因之一。同样是上面那个小样,用 11.0 排版生成 S10,再输出 PostScript 文件,里面一段内容如下:[108 0](啊座)4 4 Cxs/E-BZ9_106X106/E-BZ9 106 106 font0ERepSymbol def
E-BZ9_106X106 sf
[75 69 72 78 70 0](犃犅犆犇狑狓)-6 166 Cxs
(狔)414 172 Cs
(狕)464 166 Cs/E-BX9 106 106 false 18.690 fontERepSymbol
[77 73 76 83 74 0](犃犅犆犇狑狓)2 328 Cxs
(狔)447 335 Cs
(狕)505 328 Cs 0 setgray
看到了吗?那个汉字“犃”的编码正好就是 A0C1H,再看上图,这个码位上就放着字母“A”。“狑”、“狓”的编码分别是 A0F7H、A0F8H,表示字母“w”、“x”。大样第三行同理,只是前面将字体改成“E-BX9”,也就是白斜。把这些“ABCDwxyz”复制出去,看到的就是“犃犅犆犇狑狓狔狕”,这就是出现乱码的原因。字母“y”的编码是 A0F9H,对应于汉字“狔”。熟悉 PostScript 语言的知友会发现,这个字符的垂直位置比其他七个字母要靠下一些。这是什么原因呢?7.0 的符号字库延续了之前的矢量轮廓方法,在 96×96 的方框上描述,要求每一个节点都不能越出方框以外,如果“y”的位置和其他字母平齐,它的底部就要越出方框了,所以在字库中只能提高它的位置来存储,排版时再将它下移,看起来就和别的字母位置一样高了。9.0 开始虽然改用 CID 格式并曲线平滑了字体,但是这种处理方式仍然保留了下来。综上所述,书版采用非常奇葩的方式处理西文,才会导致它的 PDF 文件出现乱码现象。PDF文字复制后乱码_百度知道
原因:PDF文件复制乱码一般是因为PDF文件内嵌的字体在你的电脑上没有,因为word是调用系统
字体的,而PDF文件是优先调用内嵌字体的。解决办法:1. 可以尝试用Solid Converter 7/8
把PDF转成WORD格式,有些能够解决乱码问题,
但是有时候不一定能够解决。
2. 使用OCR识别软件进行文件识别处理。比如ABBYY
finereader
10/11 ,可以直接把
PDF文件识别出来成WORD文件,不过OCR识别不会100%正确,需要人工校对。p.s.
如果你自己实在没有办法解决的话,你可以把文件发我邮箱
我帮你出来~~
来自团队:
其他类似问题
97人觉得有用
为您推荐:
您可能关注的推广
pdf的相关知识
其他1条回答
用这个软件Solid Converter PDF转换电子邮箱: 解锁密码:FXHF
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 pdf复制文字是乱码 的文章

 

随机推荐