【问题标题】:PDF Hebrew convert issuePDF希伯来语转换问题
【发布时间】:2014-12-02 14:56:32
【问题描述】:

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

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

2008-2010 -> 9334-93.3‬
2011-2012 -> 4344-4344
321390445 -> 044093223

我试过这个方法:

  1. 复制粘贴
  2. 在另一个文档中打印文档
  3. 使用 LibreOffice 和 GoogleDrive 转换文档
  4. 使用 pdf2txt、pdftotext、qpdf、pdftohtml 等命令行转换器

【问题讨论】:

标签: pdf hebrew


【解决方案1】:

示例文档显示如下:

但从 Adob​​e Acrobat 复制和粘贴会导致:

4144144714614 6991-6991

乍一看,字符顺序的颠倒可能是由于在内容流中将文本的语言设置为希伯来语:

/P <</MCID 0/Lang (he-IL)>> BDC

但这不可能是错误提取多个字形的原因,例如年份数字19921996 都被提取为“6991”。

真正的罪魁祸首是这里使用的字体的 ToUnicode 表:

2 beginbfchar
<0003> <0020>
<0010> <002D>
endbfchar
1 beginbfrange
<0014> <001A> [<0036> <0031> <0034> <0034> <0037> <0031> <0034>]
endbfrange
1 beginbfchar
<001C> <0039>
endbfchar 

文本提取器使用此表将字形标识符与 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

表格应该是这样映射的:

0003 -> " "
0010 -> "-"
0014 -> "1"
0015 -> "2"
0016 -> "3"
0017 -> "4"
0018 -> "5"
0019 -> "6"
001A -> "7"
001C -> "9"

在我看来,构建 ToUnicode 表的工具既不知道如何在 PDF 中绘制字形,也不知道明文数字中的数字是如何排序的。

第一个字符串&lt;0014001C001C0019&gt; 中最右边年份1996 的字形从左到右排列。但是,如果假设明文中的字形顺序或字符顺序是从右到左的,则会得出错误的结论,即0014 将映射到“6”而0019 映射到“1” .对于上面引用的文本绘制操作中的所有字符串以及尚未关联的所有字形 ID,如果得出这样的错误结论,就会得到错误的映射,如 PDF 中的 ToUnicode 表所示。

因此,从本质上讲,PDF 是关于哪个字形代表哪个数字的谎言。要解决此问题,必须修复生产者程序(或生成 ToUnicode 映射的工具)。

【讨论】:

  • 它的 ms word 生成这样的文档。
  • 有没有办法在软件解析器中将此数字转换为正常数字?
  • 它的 ms 字 - 所以这是一个 MS Word 错误。 有没有办法在软件解析器中将此数字转换为正常数字 - 如上所述,ToUnicode 映射在这里基本上是垃圾,至少对于数字而言。如果检查 MS Word 生成的 PDF 文档,可能会发现如何修复地图的规则。不过,这本身就是一个项目。
猜你喜欢
  • 1970-01-01
  • 2019-01-07
  • 2021-08-13
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 2011-09-02
  • 2011-11-22
  • 1970-01-01
相关资源
最近更新 更多