Pdf 希伯来文转换版

Pdf 希伯来文转换版,pdf,hebrew,Pdf,Hebrew,当我转换、打印或简单复制粘贴希伯来语pdf文档时,我会得到损坏的数字。例如,在输出中,我得到的是4994-4999,而不是1992-1999。甚至LibreOffice也打开了这个问题的文档 更多示例(原始->输出): 我试过这种方法: 复制粘贴 在其他文档中打印文档 使用LibreOffice和GoogleDrive转换文档 使用命令行转换器,如pdf2txt、pdftotext、qpdf、pdftohtml 示例文档如下所示: 0003 -> " " 0010 -> "-" 00

当我转换、打印或简单复制粘贴希伯来语pdf文档时,我会得到损坏的数字。例如,在输出中,我得到的是4994-4999,而不是1992-1999。甚至LibreOffice也打开了这个问题的文档

更多示例(原始->输出):

我试过这种方法:

  • 复制粘贴
  • 在其他文档中打印文档
  • 使用LibreOffice和GoogleDrive转换文档
  • 使用命令行转换器,如pdf2txt、pdftotext、qpdf、pdftohtml

  • 示例文档如下所示:

    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"