【问题标题】:CGPDFScanner - \x15 character while scanningCGPDFScanner - 扫描时的 \x15 字符
【发布时间】:2015-07-07 10:37:15
【问题描述】:

我正在尝试提取 pdf 中第 5 页的文本。
pdf 的字体 YLJAAA+CMSY10 没有映射 (CMap) 甚至没有编码(默认编码或 /Differences)。
提取文本时,字符串“tetex package”后,CGPDFScanner 会返回多次遇到的“\x15”字符。
当遇到这个字符时,当前字体是上面提到的字体,它没有任何东西可以从 pdf 字符串中提取文本。 这个 \x15 字符是什么?

谢谢。

【问题讨论】:

    标签: ios pdf cgpdfscanner


    【解决方案1】:

    我发现了 2 次(不是“很多”)这种情况:

    [ (\025) ] TJ
    

    这是一个 八进制 的数字——这是十六进制的 \x15 数字。

    PDF中“YLJAA+CMSY10”的字体定义没有特殊编码,所以它有“CMSY”(“Computer Modern Symbol”)的默认编码:

    114 0 obj
    <<
      /Type         /Font
      /Subtype      /Type1
      /BaseFont     210 0 R % -> "/YLJAAA+CMSY10"
      /FirstChar    0
      /FontDescriptor 211 0 R
      /LastChar     127
      /Widths       204 0 R
    >>
    
    211 0 obj
    <<
      /Ascent       750
      /CapHeight    683
      /CharSet      (/bullet/greaterequal/arrowright/arrowdblright/element/negationslash/backslash/radical)
      /Descent      0
      /Flags        4
      /FontBBox     [ -29 -960 1116 775 ]
      /FontFile     205 0 R
      /FontName     210 0 R   % -> '/YLJAAA+CMSY10'
      /ItalicAngle  -14
      /StemV        85
      /XHeight      430
    >>
    endobj
    

    就其本身而言,这仍然没有明确说明:PDF 制作者可以随意重新排序字形和编码,只要它对嵌入字体执行相同的操作)。假设字体集没有重新排序,检查a random list of CMxx encodings 表明字符代码0x1F 很可能大于或等于(Unicode U+2265)。

    Acrobat 同意;检查 PDF 中的字体显示字符代码 21(十进制)被命名“大于或等于”并且看起来也是如此。

    【讨论】:

    • 但它出现在第 5 页的文本“tetex package”之后,后面没有项目符号。之后它有一个 ge 运算符。 CGPDFScanner 是否读取不正确的数据?
    • 这就是您提供不完整和令人困惑的信息所得到的。我会调整我的答案(虽然大部分还是一样的)。
    • 我在问题中提到过
    • 感谢您的回答。肯定帮了大忙。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2020-02-28
    相关资源
    最近更新 更多