DROP A PDF FILE TO START
解析はすべてブラウザ内で行います。ファイルは送信されません。
Processing...
↑↓ 選択 · Enter 移動 · Esc 閉じる
PDF Inspector — HELP

何をするツールか

PDF の中身を、オブジェクト(辞書・配列・ストリーム)・コンテンツストリーム(ページの描画命令)・hex(生のバイト列)の 3 つの見方で同時に表示します。どこにカーソルを乗せても、他の見方の対応する場所が光ります。壊れた PDF も、読める範囲で開いて、どこがどう壊れているかを示します。解析はすべてブラウザ内で行い、ファイルは送信しません。

画面

左 STRUCTURETrailer から辿る構造、ページ一覧、全オブジェクト一覧。▸ で展開、クリックで中央に表示
OBJECT選んだオブジェクトの中身。左端の数字はバイトオフセット。12 0 R をクリックすると参照先へ。ストリームは展開の過程(フィルタごとのサイズ)と中身を表示
CONTENTページの描画命令を 1 行 1 命令で。q/Q・BT/ET の入れ子で字下げ。演算子にカーソルを乗せると意味が出る。文字列にはフォントから復元した文字を薄く表示
PAGEページの描画(自前の描画エンジン)。スライダーや ◀ ▶ で命令を 1 つずつ進めるステップ実行、ページ上をクリックしてその場所を塗った命令を特定する逆引き、止めた時点のグラフィックス状態(行列・色・フォントなど)。描けなかったものは「警告」に出る。埋め込まれていないフォントは似たシステムフォントで代用
XREFクロスリファレンス表。オフセットのずれや欠落を赤で表示
REVISIONS増分更新の履歴。リビジョンごとに追加・変更・削除されたオブジェクトと、変更前後の差分
DIAG診断。xref のずれ、/Length の誤り、展開できないストリーム、参照切れなどを、原因の位置付きで一覧
RESOURCES文書に入っているものの一覧。フォント(埋め込み・ToUnicode・注意点・グリフ一覧)、画像、電子署名(署名範囲の改変と署名値の検証、署名後の追記)、メタデータ(Info と XMP の食い違い)、添付ファイル、フォーム、レイヤー、JavaScript などの動作するもの、PDF/A の簡易チェック
右 HEXファイル全体のバイト列。色は領域の種類(凡例は下)。オブジェクトストリームの中のオブジェクトや、展開後のストリームを見るときは、表示対象が切り替わる(上の FILE で戻る)

キーボード

Ctrl+K / ⌘+K / /移動・検索パレット。12(オブジェクト番号)、p3(ページ)、0x1a2b(オフセット)、それ以外は名前と文字列を検索
1〜8タブの切り替え
Backspace / Alt+←戻る
[ ]前 / 次のページ(CONTENT・PAGE)
, .ステップ実行で 1 命令戻る / 進む(PAGE)
< >前 / 次の「何かを塗る命令」まで飛ぶ(PAGE)
L左パネルの表示切り替え
?このヘルプ
Esc選択の解除 / ダイアログを閉じる
行の一覧にフォーカスがあるとき
↑ ↓ PgUp PgDn選択を移動(hex も追従)
Enter参照先・リソースを開く

PDF の骨格(早見表)

ヘッダ%PDF-1.7。バージョン
間接オブジェクト12 0 obj … endobj。番号と世代番号で識別し、12 0 R で参照する
ストリーム辞書の後ろに stream … endstream でバイト列を持つ。/Filter で圧縮される(多くは /FlateDecode = zlib)
xref各オブジェクトがファイルの何バイト目にあるかの表。ずれるとリーダーは全体を走査して修復する
trailer/Root(カタログ)、/Info、/Encrypt、/ID など、ファイル全体の入口
startxref最後の xref の位置。リーダーはファイル末尾からここを読んで解析を始める
増分更新変更したオブジェクトと新しい xref をファイル末尾に追記する方式。古い版は消えずに残る
オブジェクトストリームPDF 1.5 以降。小さなオブジェクトをまとめて圧縮したストリーム(/Type /ObjStm)