阅读(1096) (0)

PyPDF2 Cmap

2023-03-30 16:00:51 更新

查看“crazyones”的cmap:

pdftk crazyones.pdf output crazyones-uncomp.pdf uncompress

你可以看到这个:

begincmap
/CMapName /T1Encoding-UTF16 def
/CMapType 2 def
/CIDSystemInfo <<
  /Registry (Adobe)
  /Ordering (UCS)
  /Supplement 0
>> def
1 begincodespacerange
<00> <FF>
endcodespacerange
1 beginbfchar
<1B> <FB00>
endbfchar
endcmap
CMapName currentdict /CMap defineresource pop

代码空间范围

codespacerange 将完整的字节序列映射到一系列 unicode 字形。它定义了一个起点:

1 beginbfchar
<1B> <FB00>

这意味着1B(Hex for 27) 映射到 unicode 字符FB00- 连字 (两个小写的 f)。

这两个数字begincodespacerange意味着它以 0 的偏移量(因此从)开始到 FF 的偏移量(dec:255),因此 1B+FF = 282 ➜ FBFF1B ➜ FB00

在文本流中,有

(The)-342(mis\034ts.)

\034 是八进制的 28 十进制。