我不清楚字符串在文件中的位置
通常,您不会在内容流中看到明文,因为那里使用的编码不需要是标准编码,也不需要 ASCII'ish。
[ (!") -1 (#) -1 ($) -1 (%&'\() -1 (\)) -1 (*) -1 (*) -1 (\)) -1 (\() -1 ('&%$) -1 (#) -1 (") -1 (!) ] TJ
此操作在其数组操作数中包含您ZYXWVUTSRQQRSTUVWXYZ
对某些字符对的一些字距修正。
它看起来像是使用从 33 (= 0x21 = '!') 开始的字节的 ad hoc 编码。'!' 用于需要的第一个字形,Z, '"' 用于需要的第二个Y, '#' 用于第三个X等。您的测试字符串不仅以这些字符开头,而且以它们结尾,也是如此上面的数组,(!") -1 (#)
...(#) -1 (") -1 (!)
检查所用字体的定义 ( TT2 )。它可能(或可能不)包含帮助您解码此编码的信息。
或者这个流中的信息是什么意思。有什么见解吗?
要了解 PDF 内容流的内容,您应该阅读 PDF 规范ISO 32000-1的相关部分,尤其是第 8 章图形和第 9章文本。
由于您的问题集中在文本内容的识别上,例如阅读第 9.10.2 节将字符代码映射到 Unicode 值:
符合标准的读者可以使用这些方法,按照给定的优先级,将字符代码映射到 Unicode 值。带标签的 PDF 文档尤其应提供以下方法中的至少一种(参见 14.8.2.4.2,“带标签的 PDF 中的 Unicode 映射”):
如果字体字典包含ToUnicode CMap(参见 9.10.3,“ToUnicode CMaps”),则使用该 CMap 将字符代码转换为 Unicode。
如果字体是使用预定义编码MacRomanEncoding、MacExpertEncoding或WinAnsiEncoding之一的简单字体,或者其差异数组仅包含取自 Adobe 标准拉丁字符集的字符名称和符号中的命名字符集的编码字体(见附件 D):
a) 根据表 D.1 和字体的差异数组将字符代码映射到字符名称。
b) 在Adobe Glyph List(参见参考书目)中查找字符名称以获得对应的 Unicode 值。
如果字体是使用表 118 中列出的预定义 CMap 之一的复合字体(Identity-H 和 Identity-V 除外)或其后代 CIDFont 使用 Adobe-GB1、Adobe-CNS1、Adobe-Japan1 或 Adobe-Korea1人物合集:
a) 根据字体的 CMap 将字符代码映射到字符标识符 (CID)。
b) 从其CIDSystemInfo字典中获取字体的 CMap(例如 Adobe 和 Japan1)使用的字符集合的注册表和排序。
c) 通过将在步骤 (b) 中获得的注册表和排序以注册表-排序-UCS2 格式(例如,Adobe-Japan1-UCS2)连接,构造第二个 CMap 名称。
d) 获取具有在步骤 (c) 中构建的名称的 CMap(可从 ASN 网站获得;参见参考书目)。
e) 根据步骤(d)得到的CMap映射步骤(a)得到的CID,产生一个Unicode值。
注 其后代 CIDFonts 使用 Adobe-GB1、Adobe-CNS1、Adobe-Japan1 或 Adobe-Korea1 字符集(在 CIDSystemInfo 字典中指定)的 Type 0 字体应具有与符合标准的 PDF 版本相对应的补充编号。读者。有关给定 PDF 版本对应的字符集列表,请参见表 3。(可以使用这些字符集的其他增补,但如果增补的编号比支持的 PDF 版本对应的编号高,则仅后一增补中的 CID 被视为标准 CID。)
如果这些方法无法生成 Unicode 值,则无法确定字符代码代表什么,在这种情况下,符合标准的读者可以选择他们选择的字符代码。
编辑: 关于评论
其中一个对象提供了一些字体信息。它是“JJOWGO+Cambria”并将对象 16 引用为“字体文件”,这也是不可读的。我会查看手册。在网上找不到任何关于“JJOWGO”的信息。
您不会找到任何具体的内容,JJOWGO
因为它很可能是一个随机键序列,前缀Cambria
表示并非所有字体都被嵌入,而只是一个子集。参照。ISO 32000-1的第 9.6.4 节字体子集:
PDF 文档可能包含 Type 1 和 TrueType 字体的子集。描述字体子集的字体和字体描述符与普通字体略有不同。这些差异允许符合标准的阅读器识别字体子集并合并包含相同字体的不同子集的文档。(有关字体描述符的更多信息,请参阅 9.8,“字体描述符”。)
对于字体子集,字体的 PostScript 名称——字体的BaseFont条目和字体描述符的FontName条目的值——应以标记开头,后跟加号 (+)。标签应由六个大写字母组成;字母的选择是任意的,但是同一个PDF文件中的不同子集应该有不同的标签。
示例 EOODIA+Poetica 是 Poetica® 子集的名称,一种 Type 1 字体。
<<
/FontBBox [ -1475 -2463 2867 3117 ]
/StemV 0
/FontFile2 16 0 R
/Descent -222
/XHeight 467
/Flags 4
/Ascent 950
/FontName /JJOWGO+Cambria
/Type /FontDescriptor
/ItalicAngle 0
/AvgWidth 615
/MaxWidth 2919
/CapHeight 667
>>
此字体描述符不包含明显的编码信息。查看实际的字体字典并查找ToUnicode条目,参见。引用上文第 9.10.2 节的内容。