文字列がファイルのどこにあるかはわかりません
一般に、コンテンツ ストリームにクリア テキストは表示されません。これは、そこで使用されるエンコーディングが標準エンコーディングである必要がなく、ASCII っぽいものである必要がないためです。
[ (!") -1 (#) -1 ($) -1 (%&'\() -1 (\)) -1 (*) -1 (*) -1 (\)) -1 (\() -1 ('&%$) -1 (#) -1 (") -1 (!) ] TJ
この操作の配列オペランドには、ZYXWVUTSRQQRSTUVWXYZ
特定の文字ペアのカーニング修正が含まれています。
33 (= 0x21 = '!') 以降のバイトを使用したアドホック エンコーディングのようです。「!」必要な最初のグリフ、Z、2番目に必要なYには '"' 、3番目のものには '#' Xなどに使用されます。テスト文字列はこれらの文字で始まるだけでなく、それらで終わります。上記の配列、(!") -1 (#)
... (#) -1 (") -1 (!)
.
使用されているフォントの定義を調べます ( TT2 )。このエンコーディングのデコードに役立つ情報が含まれている場合と含まれていない場合があります。
またはこのストリームの情報が何を意味するか。洞察はありますか?
PDF コンテンツ ストリームの内容を理解するには、PDF 仕様ISO 32000-1の関連セクション、特に 8 Graphicsおよび 9 Textの章を読む必要があります。
あなたの質問はテキストコンテンツの認識に焦点を当てているので、例えばセクション 9.10.2 Mapping Character Codes to Unicode Values を読んでください:
準拠するリーダーは、指定された優先順位でこれらのメソッドを使用して、文字コードを Unicode 値にマップできます。特に、タグ付き PDF ドキュメントは、これらのメソッドの少なくとも 1 つを提供する必要があります (14.8.2.4.2「タグ付き PDF の Unicode マッピング」を参照)。
フォント辞書に ToUnicode CMap が含まれている場合( 9.10.3「ToUnicode CMaps」を参照)、その CMap を使用して文字コードを Unicode に変換します。
フォントが、事前定義されたエンコーディングMacRomanEncoding、MacExpertEncoding、またはWinAnsiEncodingのいずれかを使用する単純なフォントであるか、アドビ標準ラテン文字セットから取得された文字名と Symbolフォント (付録 D を参照):
a) 表 D.1 およびフォントのDifferences配列に従って、文字コードを文字名にマップします。
b) Adobe Glyph リスト(文献目録を参照) で文字名を調べて、対応する Unicode 値を取得します。
フォントが、表 118 にリストされている定義済みの CMaps のいずれかを使用する複合フォント (Identity-H および Identity-V を除く)、またはその子孫 CIDFont が Adobe-GB1、Adobe-CNS1、Adobe-Japan1、または Adobe-Korea1 を使用する複合フォントである場合キャラクターコレクション:
a) フォントの CMap に従って、文字コードを文字識別子 (CID) にマップします。
b) CIDSystemInfoディクショナリから、フォントの CMap (Adobe や Japan1 など) で使用される文字コレクションのレジストリと順序を取得します。
c) 手順 (b) で取得したレジストリと順序を、registry–ordering –UCS2 の形式で連結して、2 番目の CMap 名を作成します (たとえば、Adobe–Japan1–UCS2)。
d) 手順 (c) で作成された名前の CMap を取得します (ASN Web サイトから入手できます。参考文献を参照してください)。
e) ステップ (d) で取得した CMap に従って、ステップ (a) で取得した CID をマップし、Unicode 値を生成します。
注: 派生 CIDFonts が Adobe-GB1、Adobe-CNS1、Adobe-Japan1、または Adobe-Korea1 文字コレクション (CIDSystemInfo 辞書で指定されている) を使用するタイプ 0 フォントには、準拠によってサポートされている PDF のバージョンに対応する補足番号が必要です。読者。特定の PDF バージョンに対応する文字コレクションのリストについては、表 3 を参照してください。(これらの文字コレクションの他の補足を使用できますが、補足がサポートされている PDF バージョンに対応するものよりも大きい番号である場合、後者の補足の CID のみが標準 CID と見なされます。)
これらのメソッドが Unicode 値の生成に失敗した場合、文字コードが何を表しているかを判断する方法がありません。この場合、適合するリーダーは、選択した文字コードを選択できます。
編集: コメントについて
オブジェクトの 1 つがフォント情報を提供しました。これは「JJOWGO+Cambria」であり、オブジェクト 16 を「フォント ファイル」として参照していますが、これも読み取り不能でした。マニュアルを見直してみます。「JJOWGO」についてオンラインで何も見つかりません。
そのフォントのすべてが埋め込まれているわけではなく、サブセットのみが埋め込まれていることを示すためにJJOWGO
接頭辞が付けられたランダムなキーシーケンスである可能性が最も高いため、具体的なものは見つかりません。Cambria
参照。セクション 9.6.4 ISO 32000-1のフォントサブセット:
PDF ドキュメントには、Type 1 および TrueType フォントのサブセットが含まれる場合があります。フォント サブセットを記述するフォントとフォント記述子は、通常のフォントとは少し異なります。これらの違いにより、準拠するリーダーはフォント サブセットを認識し、同じフォントの異なるサブセットを含むドキュメントをマージできます。(フォント記述子の詳細は、9.8「フォント記述子」を参照してください。)
フォント サブセットの場合、フォントの PostScript 名 (フォントのBaseFontエントリとフォント記述子のFontNameエントリの値) は、タグで始まり、その後にプラス記号 (+) が続きます。タグは正確に 6 文字の大文字で構成されます。文字の選択は任意ですが、同じ PDF ファイル内の異なるサブセットには異なるタグが必要です。
例 EOODIA+Poetica は、Type 1 フォントである Poetica® のサブセットの名前です。
<<
/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
>>
このフォント記述子には、明らかなエンコーディング情報は含まれていません。実際のFontディクショナリを見て、ToUnicodeエントリを探してください。上記のセクション 9.10.2 の引用。