Pdf 希伯来文转换版
当我转换、打印或简单复制粘贴希伯来语pdf文档时,我会得到损坏的数字。例如,在输出中,我得到的是4994-4999,而不是1992-1999。甚至LibreOffice也打开了这个问题的文档 更多示例(原始->输出): 我试过这种方法:Pdf 希伯来文转换版,pdf,hebrew,Pdf,Hebrew,当我转换、打印或简单复制粘贴希伯来语pdf文档时,我会得到损坏的数字。例如,在输出中,我得到的是4994-4999,而不是1992-1999。甚至LibreOffice也打开了这个问题的文档 更多示例(原始->输出): 我试过这种方法: 复制粘贴 在其他文档中打印文档 使用LibreOffice和GoogleDrive转换文档 使用命令行转换器,如pdf2txt、pdftotext、qpdf、pdftohtml 示例文档如下所示: 0003 -> " " 0010 -> "-" 00
示例文档如下所示:
0003 -> " "
0010 -> "-"
0014 -> "1"
0015 -> "2"
0016 -> "3"
0017 -> "4"
0018 -> "5"
0019 -> "6"
001A -> "7"
001C -> "9"
但从Adobe Acrobat复制和粘贴会导致:
41441447146146991-6991
乍一看,字符顺序的颠倒可能是由于在内容流中将文本语言设置为希伯来语:
/P <</MCID 0/Lang (he-IL)>> BDC
文本提取器使用此表将字形标识符与Unicode代码点关联。这里的bfchar和bfrange部分暗示了这种映射:
0003 -> 0020 " "
0010 -> 002D "-"
0014 -> 0036 "6"
0015 -> 0031 "1"
0016 -> 0034 "4"
0017 -> 0034 "4"
0018 -> 0037 "7"
0019 -> 0031 "1"
001A -> 0034 "4"
001C -> 0039 "9"
显然,三个不同的字形映射到数字“4”,两个不同的字形映射到数字“1”
但是,在文本绘制操作中将渲染的图示符与图示符ID进行比较
[<0014001C001C0019>] TJ
[<0010>] TJ
[<0014001C001C0015>] TJ
[<0003>] TJ
[<00170019001A00170019001A001700180019001A>11<001400150016>] TJ
在我看来,构建ToUnicode表的工具似乎不知道如何在PDF中绘制字形或如何排列明文数字中的数字
第一个字符串
中最右侧年份1996
的图示符从左到右排列。但是,如果假定明文中的字形顺序或字符顺序是从右到左的,则会得出错误的结论,即0014
将映射到“6”,而0019
映射到“1”。对于上面引用的文本绘制操作中的所有字符串和所有尚未关联的glyph id,都会得出错误的结论,如PDF中的ToUnicode表所示
因此,本质上,PDF是关于哪个标志符号代表哪个数字的谎言。要解决此问题,必须修复producer程序(或生成ToUnicode地图的工具)。最有可能的是,PDF中不包含字形表示的字符信息,甚至不包含错误信息。如果您共享一个示例文件,我们可以检查。带有bug的文档示例:它的ms word生成这样的文档。有没有办法在软件解析器中将这些数字转换为正常值?它的ms word-因此它是一个ms word bug。有没有一种方法可以在软件解析器中将这些数字转换为普通数字?如上所述,ToUnicode地图在这里基本上是垃圾,至少对于数字来说是这样。如果检查MS Word生成的PDF文档,您可能会发现如何修复地图的规则。不过,这本身就是一个项目。
[<0014001C001C0019>] TJ
[<0010>] TJ
[<0014001C001C0015>] TJ
[<0003>] TJ
[<00170019001A00170019001A001700180019001A>11<001400150016>] TJ
0003 -> " "
0010 -> "-"
0014 -> "1"
0015 -> "2"
0016 -> "3"
0017 -> "4"
0018 -> "5"
0019 -> "6"
001A -> "7"
001C -> "9"