Formats2026-09-20約1分で読めます

PDF の中身:オブジェクト、ストリーム、相互参照表

PDF は番号付きオブジェクトのグラフ、圧縮ストリーム、バイトオフセットの xref でできている。Get Info が検査し、地図が壊れたときは Repair が構造を組み直す。

PDF123 · Updated 2026-09-20

PDF は平坦なページの詰め合わせではない。オブジェクトの小さなデータベースであり、その多くは圧縮されたストリームとして保存され、相互参照表(xref)によって位置が示される。リーダーはファイル全体を走査せずにオブジェクト 17 へ跳べる。この地図が壊れると、ページのバイトがディスク上に残っていても、ビューアはファイルを破損と呼ぶ。

オブジェクト

興味深いものはすべて(ページ、フォント、画像、メタデータ、文書カタログ)番号を持つオブジェクトだ。ページは内容ストリームとリソースを指し、リソースはフォントと XObject を指し、カタログはページ木を指す。結合、回転、スタンプを担うツールは、画素を描き直すのではなく、たいていこのグラフを書き換える。

ストリーム

ストリームはペイロードがバイト列のオブジェクトで、しばしば Flate 圧縮される。ページ内容の演算子、埋め込まれたフォントファイル、画像データなどだ。テキストエディタで PDF を開くと ASCII のトークンとバイナリの塊が混ざって見えるのはそのためだ。ストリームを展開する(ページの見た目は変えない)のはデバッグに役立つ。本サイトの 圧縮 は qpdf でそれらのストリームを再圧縮するだけで、画像をダウンサンプリングしたりフォントをサブセット化したりはしない。

相互参照表

典型的なファイルの末尾付近に、xref の区画(新しいファイルでは xref ストリーム)があり、各オブジェクト番号のバイトオフセットを列挙する。リーダーはそのオフセットへシークする。途中で切れたダウンロード、失敗した結合、書きかけの保存は、トレーラがすでに一致しないオフセットを指したままになることが多い。1 ページ目の画素はまだ存在していても、「1 ページ目」を見つける地図が無いのだ。

だからこそ構造の修復は OCR や解除とは別の仕事になる。修復は有効な残骸から内部構造を組み直すのであって、欠けたページの絵を生み出したり、パスワードを推測したりはしない。

書き換える前に調べる

PDF の情報取得 は JSON のレポート(ページ数、メタデータ、フォント、構造の詳細)を返すのであって、変更された PDF ではない。圧縮、変換、修復の前に、手元のファイルが何なのかを知りたいときに使う。

ビューアがファイルをまったく開けないなら PDF の修復 を試す。相互参照の復旧を含めて構造を組み直す。開くがスキャンのテキストを選択できないなら、それは OCR の問題であり xref の問題ではない。

短い判断順序

  1. ファイルが開かない → まず 修復。
  2. 開くが事実を知りたい(ページ、フォント、暗号化の手がかり)→ 情報取得。
  3. 構造は問題なく、より小さいファイルやスキャンから読めるテキストが欲しい → サイズなら 圧縮、Markdown テキストなら OCR。もう一度修復ではない。

情報取得と修復はどちらもアカウント不要で動く。同じ op を HTTP から使う方法は 開発者向け にある。修復がブランド化されたデスクトップの「リカバリ」製品とどう違うかは オンライン PDF 修復と Recovery Toolbox 検索 にある。

Open tool
Process in the browser — no watermark, files removed after the job.
Open tool