何をするツールか
PDF の中身を、オブジェクト(辞書・配列・ストリーム)・コンテンツストリーム(ページの描画命令)・hex(生のバイト列)の 3 つの見方で同時に表示します。どこにカーソルを乗せても、他の見方の対応する場所が光ります。壊れた PDF も、読める範囲で開いて、どこがどう壊れているかを示します。解析はすべてブラウザ内で行い、ファイルは送信しません。
画面
| 左 STRUCTURE | Trailer から辿る構造、ページ一覧、全オブジェクト一覧。▸ で展開、クリックで中央に表示 |
| 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) |