マークの回答に賛成票を投じたのは、彼が正しいからです。より具体的でない場合、回答は得られません。いくつかの追加情報を使用して、独自の回答を追加します。
PDF 1.0 では、PDF ファイルは、PDF 構文用の ASCII 文字と、画像などのオブジェクト用のバイナリ コードの組み合わせで構成されていました。ページ ストリームには、目に見える PDF 演算子とオペランドが含まれます。たとえば、次のようになります。
56.7 748.5 m
136.2 748.5 l
S
このコードは、座標 (演算子でカーソルが移動する場所であるため) と座標(線を追加する演算子を使用してパスが作成されたためS
) の間に線を引く ( ) 必要があることを示しています。(x = 56.7; y = 748.5)
m
(x = 136.2; y = 748.5)
l
PDF 1.2 から、そのようなコンテンツ ストリーム (ページ コンテンツ ストリーム、フォーム XObjects) にフィルターを使用できるようになりました。ほとんどの場合、ストリーム ディクショナリ/Filter
に値を持つエントリが見つかります。/FlateDecode
コンテンツが圧縮されていない「最新の」PDF はほとんどありません。
PDF 1.5 までは、PDF ドキュメント内のすべての間接オブジェクトと相互参照ストリームは、ASCII で PDF ファイルに格納されていました。PDF 1.5 から、特定の種類のオブジェクトをオブジェクト ストリームに格納できるようになりました。相互参照テーブルは、ストリームに圧縮することもできます。iTextには、これが当てはまるかどうかを確認PdfReader
する方法があります。isNewXrefType()
多分それはあなたが探しているものです。このタイプの PDF を読み取ることができないソフトウェアで読み取る必要がある PDF があるかもしれませんが、あなたは私たちに教えてくれません。
たぶん、私たちは質問を完全に誤解しています。実際の PDF を受け取っているのか、PDF を含む zip ファイルを受け取っているのか知りたいと思うかもしれません。または、PDF 内で使用されているさまざまなフィルターを実際にデータマイニングしたい場合もあります。要するに、あなたの質問はあまり明確ではありません。この回答で、明確にする必要がある理由が説明されることを願っています。