我有以下命令:
[1010]TJ
我知道它在十六进制部分隐藏了日语,因为这是 PDF 中唯一的内容,并且这一行位于 pdf 文件中单个页面的唯一内容流中。
问题是,无论我如何尝试解码这个十六进制字符串,我都会得到乱码,我已经将这些十六进制字符串解码为字节,并尝试逐字应用我能找到的每个字符集,但我仍然得到乱码。
(也许我很绝望,因为我知道它可能不会起作用)
我还尝试了另一种方式,在 Android 上进行测试,我能够导入 pdf 日语文本(从资源加载它),并且在调试时我可以在 String 实例的值中看到真实的日语文本,我再次尝试应用所有字符集,仅为整个文件生成 4-6 个匹配的十六进制字符,但再次......什么也没有。
实际上我不需要字形,我会选择正确的文本......
难道文本本身是用字符集编码以外的东西编码的吗?
有人能指出我正确的方向吗?
===更新===
好的,所以我发现还有一个额外的“加密”,Identity-H,我已经在这里读您需要一个 /ToUnicode 映射,我似乎在文件中找不到它。
让我抓狂的是其他 PDF 查看器可以显示 PDF,但我不知道如何显示!
再说一次,任何骨头都很好......见鬼,我会去吃碎片:)
Thanks,
Adam.
对于某些文件上下文:
...
10 0 obj
<<
/Type /Page
/Parent 7 0 R
/Resources 11 0 R
/Contents 16 0 R
/MediaBox [ 0 0 595 842 ]
/CropBox [ 0 0 595 842 ]
/Rotate 0
>>
endobj
11 0 obj
<<
/ProcSet [ /PDF /Text ]
/Font << /TT2 13 0 R /G1 12 0 R >>
/ExtGState << /GS1 19 0 R >>
/ColorSpace << /Cs6 15 0 R >>
>>
endobj
12 0 obj
<<
/Type /Font
/Subtype /Type0
/BaseFont /Ryumin-Light-Identity-H
/Encoding /Identity-H
/DescendantFonts [ 18 0 R ]
>>
endobj
13 0 obj
<<
/Type /Font
/Subtype /TrueType
/FirstChar 32
/LastChar 32
/Widths [ 278 ]
/Encoding /WinAnsiEncoding
/BaseFont /Century
/FontDescriptor 14 0 R
>>
endobj
14 0 obj
<<
/Type /FontDescriptor
/Ascent 985
/CapHeight 0
/Descent -216
/Flags 34
/FontBBox [ -165 -307 1246 1201 ]
/FontName /Century
/ItalicAngle 0
/StemV 0
>>
endobj
15 0 obj
[
/ICCBased 20 0 R
]
endobj
16 0 obj
<< /Length 2221 /Filter /FlateDecode >>
stream
...
[<0e0f0a52030d030e0ce5030f0744030f>10<030d>10<0cd4>]TJ
...
<00e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e700e7>Tj
...
<030e030d0a48064403740353035a039408030ebd074807c1036e0358039304e10c8802a2074807c10cd40e8a030e030d02a303770a2a0a100374036d034d036f00e7>Tj
...
endstream
endobj
17 0 obj
<<
/Type /FontDescriptor
/Ascent 723
/CapHeight 709
/Descent -241
/Flags 6
/FontBBox [ -170 -331 1024 903 ]
/FontName /Ryumin-Light
/ItalicAngle 0
/StemV 69
/XHeight 450
/Style << /Panose <010502020300000000000000>>>
>>
endobj
18 0 obj
<<
/Type /Font
/Subtype /CIDFontType0
/BaseFont /Ryumin-Light
/FontDescriptor 17 0 R
/CIDSystemInfo << /Registry (Adobe)/Ordering (Japan1)/Supplement 2 >>
/DW 1000
/W [ 231 [ 500 ] ]
>>
endobj
19 0 obj
<<
/Type /ExtGState
/SA false
/SM 0.02
/TR2 /Default
>>
endobj
20 0 obj
<< /N 3 /Alternate /DeviceRGB /Length 2572 /Filter /FlateDecode >>
stream
...
endstream
endobj
...
这是你的问题:
我发现有一个额外的“加密”,Identity-H,并且我在这里读到您需要一个 /ToUnicode 映射,但我似乎在文件中找不到它。
这表明文本字符串中的两字节十六进制代码是立即的字形索引到原始字体文件中。在字体文件中搜索 Unicode 字符映射(其之一cmap
条目);这将提供从字形索引到 Unicode 的链接。
请注意,字形索引可能会这样做not立即转换为 Unicode 代码点。 AGSUB
or GPOS
OpenType 表可能已采用一个或多个 Unicode 字符作为输入,并用输出字符串中的另一字形替换它们。原始创建者也有可能(但不太可能)手动插入原始字形。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)