PDF文本字符串的编码
我正在为PDF(文本提取)解析器工作 当页面需要进行平面解码(从zlib压缩)时,我的代码能够解压缩内容流,然后我有如下输出(流对象):PDF文本字符串的编码,pdf,Pdf,我正在为PDF(文本提取)解析器工作 当页面需要进行平面解码(从zlib压缩)时,我的代码能够解压缩内容流,然后我有如下输出(流对象): BT 56.8 721.3 Td /F2 12 Tf [<01>2<0203>2<04>-10<0503>2<04>-2<0506070809>2<0A>1<0B>]TJ ET BT 56.8 721.3 Td /F2 12 Tf [22-102-221]TJ
BT
56.8 721.3 Td
/F2 12 Tf
[<01>2<0203>2<04>-10<0503>2<04>-2<0506070809>2<0A>1<0B>]TJ
ET
BT
56.8 721.3 Td
/F2 12 Tf
[22-102-221]TJ
ET
我对字符串数组(TJ的操作数)感兴趣
这个数组中似乎包含多个十六进制编码的字符串,但相应的十六进制值没有意义。相反,它看起来像一个序列010203。。。有点像lz77压缩
- PDF有多个压缩级别吗
- 如何从上面的字符串数组中获取纯文本李>
- 阿披实
这远不是一个简单的问题,不幸的是,它表明您还没有阅读PDF规范。你应该这样做
您可以在此处下载Acrobat SDK:
其中一部分是PDF规范,它是一个非常重要的文档,解释了PDF的来龙去脉(包括您问题的答案)
标准编码
宏编码
winansioncoding
PDFDocEncoding
MacExpertEncoding
除此之外,还可以有一个
简而言之,您看到的不是阅读文档的替代品,而是/F2 12 Tf命令设置的字体编码中的字符值,该命令设置了后续编写文本时使用的特定字体。在您开始这样一个雄心勃勃的项目之前,您应该熟悉完整的。请注意:这是一个756页的文档,它引用了大约90个其他文档,它声明这些文档也是PDF的“规范性”文档 您将了解到,为了将PDF源代码转换为文本内容,必须反向应用字体使用的编码。可使用5种规范定义的标准编码:
(当嵌入字体是一个子集时,它将起作用,并且不包含字体定义的所有字形,而只包含文档所需的字形)。如果PDF中定义了自定义编码
表,则只能反转CustomEncode-d文本。只有这样,您才能将编码字符反向映射到字符名 您还将了解到,可用于显示文本字符串的运算符不仅有一个,还有四个:/ToUnicode
:“显示文本”Tj
:“显示文本,允许单个字形定位”TJ
:“移动到下一行并显示文本””
:“设置单词和字符间距,移动到下一行并显示文本”“
此外,有三种不同的方式来表示文本字符串。这里给出了字符串“string”的示例:
:在括号内使用标准的可打印ASCII字符(仅适用于拉丁/ASCII文本部分)(字符串)
:使用八进制字符代码(也在括号内),如规范文件“附录D(规范性)字符集和编码”中所列(\163\164\162\151\156\147)
:在尖括号内使用十六进制编码字符代码
文本提取器的问题如下:
- 可以混合使用可打印ASCII字符(
以上)和八进制字符代码(1.
以上)。以下所有内容也是字符串“string”的“合法”表示形式(列表不完整!):2.
- 使用十六进制编码字符代码(
)也不是直接的,因为以下所有表示形式都是等效的:3.
<73 74 72 69 6E 67> TJ <73 7472 696E67> TJ <7 374 7 269 6E 67>TJ <73 74 72696E 67> TJ <73 74 7 2 69 6E 67> TJ
和BT
表示显示部分的文本的开头和结尾ET
将当前点定位到坐标“水平方向56.8点,垂直方向721.3点”56.8 721.3 Td
将字体大小设置为12点12 Tf
将要使用的字体设置为PDF文档中其他地方定义的字体。该字体还设置了字体编码(可能是/F1
表)。字体编码将确定在文本字符串中看到特定字符代码时应绘制的字形/ToUnicode
[22-102-221]TJ
:2
是第一个字符代码。
是使用文本显示操作符2
时允许的“单个字形定位”参数TJ
:2
是另外两个字符代码。
也是2
的“单个字形定位”参数TJ
:-10
是第四个字符代码。
再次用于使用-10
的“单个字形定位”TJ
:2
是第五个字符的代码,
是第三个字符的代码(以前使用过)。
用于“单个字形定位”2
- 等等
- 正数将下一个图示符向左移动(将图示符间距减小到下一个图示符)
- 负数将下一个图示符向右移动(为下一个图示符添加更多空间)
- 这些数字本身将被视为re
<73 74 72 69 6E 67> TJ <73 7472 696E67> TJ <7 374 7 269 6E 67>TJ <73 74 72696E 67> TJ <73 74 7 2 69 6E 67> TJ
BT 56.8 721.3 Td /F2 12 Tf [<01>2<0203>2<04>-10<0503>2<04>-2<0506070809>2<0A>1<0B>]TJ ET
$ pdffonts sample.pdf name type encoding emb sub uni object ID ------------------------- ------------- ------------ --- --- --- --------- IADKRB+Arial-BoldMT CID TrueType Identity-H yes yes yes 10 0 SSKFGJ+ArialMT CID TrueType Custom yes yes no 11 0