我有两个版本的PDF文件,我知道它们略有不同——第3页上灰色条中的“重新评估”文本:
我使用 pdfcpu 从多页 PDF 中提取内容,然后通过
我在PDF参考文献中查找了7.3.4.3 十六进制字符串:
但是我得到的是垃圾。即使没有空字节:
我希望它看起来像这样(反过来):
我在这个某个相关的SO帖子上找到了这条评论:
我使用 pdfcpu 从多页 PDF 中提取内容,然后通过
diff
工具运行第三页。% diff out_orig/page_3.txt out_new/page_3.txt
1650a1651,1658
> BT
> 1 0 0 rg
> 0 i
> /RelativeColorimetric ri
> /C2_2 9.96 Tf
> 0 Tw 358.147 648.779 Td
> <0035004800440056005600480056005600500048005100570003003000580056005700030032004600460058005500030028005900480055005C0003001600030030005200510057004B0056>Tj
> ET
我在PDF参考文献中查找了7.3.4.3 十六进制字符串:
因此,我认为我应该能够直接将十六进制字符解释为ASCII文本。一个十六进制字符串应该被写作一系列用ASCII字符编码的十六进制数字,同时被尖括号所包围。
>>> s = '0035004800440056005600480056005600500048005100570003003000580056005700030032004600460058005500030028005900480055005C0003001600030030005200510057004B0056'
>>> import binascii
>>> binascii.a2b_hex(s)
b'\x005\x00H\x00D\x00V\x00V\x00H\x00V\x00V\x00P\x00H\x00Q\x00W\x00\x03\x000\x00X\x00V\x00W\x00\x03\x002\x00F\x00F\x00X\x00U\x00\x03\x00(\x00Y\x00H\x00U\x00\\\x00\x03\x00\x16\x00\x03\x000\x00R\x00Q\x00W\x00K\x00V'
但是我得到的是垃圾。即使没有空字节:
>>> binascii.a2b_hex(s).replace(b'\x00', b'')
b'5HDVVHVVPHQW\x030XVW\x032FFXU\x03(YHU\\\x03\x16\x030RQWKV'
我希望它看起来像这样(反过来):
>>> binascii.b2a_hex(b'Reassessment Must Occur Every 3 Months')
b'52656173736573736d656e74204d757374204f636375722045766572792033204d6f6e746873'
我在这个某个相关的SO帖子上找到了这条评论:
所以...也许这个十六进制字符串不仅仅是十六进制编码的ASCII码? 我在提取文本差异方面漏掉了什么?字面字符串(7.3.4.2)- 这非常直观,因为你只需遍历“( . ? )”的数据* - 这仅适用于使用标准字体编码的简单示例。与此同时,嵌入字体的自定义编码已经变得非常普遍。