PDF:如何将流更改/解码为文本?

时间:2015-02-04 15:30:51

标签: pdf fonts

该文档仅包含文本无图像PDF的重复部分如下:

 trailer
 <</Root 1 0 R>>

1 0 obj
<</Type/Catalog/Pages 3 0 R>>
endobj

3 0 obj
<</Type/Pages/Kids[4 0 R]/Count 1/Rotate 0/ITXT(5.0.6)>>
endobj

4 0 obj
<</Type/Page
  /MediaBox[0 0 612 1008]
  /Rotate 0
  /Parent 3 0 R
  /Resources<<
      /ProcSet[/PDF/Text]
      /ExtGState 12 0 R
      /Font 13 0 R>>
  /Contents 5 0 R
  /Annots[24 0 R]>>
 endobj

 12 0 obj
 <</R7 7 0 R>>
 endobj

 7 0 obj
<</Type/ExtGState /OPM 1>>
endobj

13 0 obj
<</R8 8 0 R
  /R10 10 0 R>>
endobj

8 0 obj
<</BaseFont /LRSXWR+TimesNewRoman
  /FontDescriptor 9 0 R
  /Type/Font
  /FirstChar 1
  /LastChar 41
  /Widths[ 
       333 722 250 611 722 611 722 667 722 722 667 556 556 389 
       722 667 722 722 500 333 444 389 500 278 278 500 333 500 
       444 500 278 250 889 250 500 500 444 500 278 778 500]
   /Encoding 16 0 R
   /Subtype/TrueType>>
   endobj

16 0 obj
<</Type/Encoding
  /BaseEncoding/WinAnsiEncoding
  /Differences[
            1/I/N/space/T/H/E/G/C/O/U/R/F/P/J/A/B
            /D/Y/asterisk/r/e/s/n/t/colon/o/f/h/a/p/l/period
            /M/comma/d/v/c/two/i/m/u]
  >>
  endobj

上述信息是出于需求目的而提供的,我想解码的内容对象为:

  5 0 obj 
  <</Length 5950>>
  stream
  q 0.12 0 0 0.12 0 0 cm
  /R7 gs
  0 0 0 RG
  0 0 0 rg
  q
  8.33333 0 0 8.33333 0 0 cm BT
  /R8 14.0388 Tf
  0.997231 0 0 1 90.1533 922.927 Tm
   [
    (SOH)-0.762768(STX)10.3078(ETX)10.019(EOT)10.888
    (ENQ)-6.34593(ACK)10.888(ETX)-7.12126(ENQ)2.22552
    (SOH)7.32006(BEL)-6.34489(ENQ)10.797(ETX)-7.1223
    (BS)7.04592(    )-6.34489(\n)10.797(VT)49.899
    (EOT)28.0288(ETX)-7.12126(  )2.22552(FF)-0.944827
    (ETX)10.0196(\r)-0.945874(\n)-5.8573(STX)10.3083
    (SQ)-13.6649(SI)10.798(DLE)-10.097(ETX)52.8727
    (SI)11.2835(STX)-6.83247(DC1)2.22657(ETX)10.0175
    (ENQ)-6.34489(SI)10.798(VT)49.8969(DC2)105.076
    (SI)11.2856(STX)-6.83457(SI)53.6511(ETX)61.442
    (SI)105.076(EOT)28.0288(ETX)-7.12335(BS)-1.52554
    (ENQ)2.22657(SI)11.2835(STX)-6.83247(DC1)10.798
    (SOH)-9.82286(BEL)2.22657(SI)
   ]TJ
   412.949 0 Td
   [(VT)-1.52763(ENQ)722.166]TJ
   .......
   .......

1 个答案:

答案 0 :(得分:1)

将PDF流解码为文本并不是很简单,因为你没有像文本那样的东西。 你有一系列具有非常可怜意义的glyhps。在您的情况下,您使用字体13 0,其由41个字符的/ LRSXWR + TimesNewRoman组成,其中包含在obj 16 0中定义的更改,其中包含字形含义的解释。你必须有一些来自&#34; space&#34;的翻译表。到&#34; &#34; (我很惊讶,你的案例中有空格的字形)。在其他情况下,这可能不是那么简单。我已经多次看到,有一个嵌入字体,字形按用法排序,除了视觉证据外,没有其他字形可以代表什么。

您确定要阅读pdf文件中的文字吗?