PDF デバッガーを使用して PDF ファイルのコードを検査する方法

Apple は、PostScript ファイルの直接サポートを 2012 年に終了しました。macOS ソノマただし、PDF デバッガーを使用すると、PDF ファイル内を覗いて内容を確認することができます。

PDF - Web のユビキタスなドキュメント形式は、1980 年代初頭に Adob​​e Systems で発明されました。当時、レーザープリンターはちょうど全盛期でした。AppleのLaserWriterプリンタと、世界初の商用デスクトップ パブリッシング システムの 1 つとして機能した Macintosh Plus。

PostScript - PDF の起源

追記は、ページを画面上または紙上にどのようにレイアウトするかを記述する言語です。 PostScript は当初レーザー プリンタの ROM で使用されていましたが、その後、米国製のコンピュータでも使用されるようになりました。スティーブ・ジョブズ氏2社目、株式会社NeXT

NeXT のオペレーティング システム NeXTStep (後に OpenStep と呼ばれる) は、以下を使用することで初期の画面上の制限を克服しました。ポストスクリプトを表示するテキスト、図形、画像を画面上に表示します。

Adobe のオリジナルの PDF ファイル標準は技術的には純粋な PostScript ではありませんでしたが、そこから派生したものです。 2000 年に公開されたバージョン 1.3 では、Adobe は PostScript 言語レベル 3 イメージング モデルのサポートを追加しました。

また、オリジナルの、現在は廃止されている Adob​​e フォント標準である Type 1 もサポートしていました。これについては、今後の記事で説明します。

PDF および .ps ファイル

数年後、アドビはPortable Document Formatを導入しました。PDF、これはドキュメントおよび Web の標準になっています。 PDF はもともと Adob​​e 独自の形式でしたが、2008 年に ISO 32000 として標準化されました。

2020年にも基準が改訂されました。

当時の Adob​​e 経営陣の多くが PDF に対する需要を認識していなかったため、PDF はほとんど日の目を見ることはありませんでしたが、グラフィック デザイン、デスクトップ パブリッシング、印刷の世界では依然として PostScript が支配的なページ記述言語でした。

PDF には、フォーム、デジタル署名、3D オブジェクト、ビデオ、その他の多くのコンテンツを埋め込むこともできます。 PDF ファイルは暗号化してパスワードで保護できますが、Adobe は最近オリジナルの PostScript フォント形式のサポートを終了したと発表しました。タイプ 1 フォント

最新のコンピューターで PDF ファイルを開くと、アプリケーションはオペレーティング システムまたはライブラリ コードを使用して PDF ファイルの説明を読み取ります。コマンドを OS 上で表示するネイティブ描画ルーチンに変換します。

のためにmacOSそしてiOS、これは石英PDF ファイルを処理するための API を含むフレームワークと、コアグラフィックスPDF 表示用のグラフィック描画コンテキストを提供するフレームワーク。 Apple は、元の Quartz フレームワークの機能を分割して、Core Graphics がほとんどの描画プリミティブとコンテキストを処理し、Quartz が画像、PDF 操作、および Quick Look プレビュー機能を処理するようにしました。

プレビュー、印刷、表示

Apple のプレビュー アプリと印刷システムは、PostScript コードを含む .ps ファイルの形式で PostScript を直接開き、表示、印刷できましたが、このサポートは macOS 14 Sonoma で終了しました。 Preview は何十年にもわたって PDF ファイルをサポートしてきました。

.ps ファイルの生の PostScript コンテンツは引き続き、マックTextEdit アプリにドロップするだけです。これらはテキスト ファイルとして開き、PostScript を直接読むことができます。

Finder の PDF および PostScript ファイル。

最新のレーザー プリンタのほとんどは ROM に PostScript インタプリタを含んでいませんが、一部のコンシューマー レベルのレーザー プリンタには、プリンタのネイティブ レンダリングを使用して .ps ファイルを受信、デコード、印刷できる Brother の BR-Script などの PostScript エミュレータが含まれています。

HexFiend や HexEdit などの Mac 16 進エディタ ユーティリティを使用して、PDF ファイル内を調べて生のコンテンツを確認できます。 16 進エディタは、コードとバイナリ ファイルの内容を表示するように設計されていますが、ファイル形式を知っていれば、あらゆる種類のファイル コンテンツを表示するために使用できます。

Hex Fiend での PDF コンテンツの表示。

ただし、PDF ファイルを含む多くのファイルでは、生データが人間が判読できない方法でエンコードまたは保存される可能性があります。このため、16 進エディターで何を確認しているのかを理解するには、ファイル形式の内部についてよく知っておく必要があります。

PDF ファイルの場合、通常は「%PDF」キーで始まり「%EOF」で終わります。

ほとんどの PDF ファイルは、階層ツリーのような構造で構成されています。ツリー上の一部のノードは、親ノードをさらに説明する子ノードで構成されますが、他のノード (リーフ ノード) には、ページ数、タイプ、長さ、作成者の詳細、その他の情報などのファイルに関する情報のみが含まれます。

PDF ファイルは破損し、無効なツリー データが含まれる可能性があり、ほとんどの場合、PDF ファイルを読み取ることができなくなります。 PDF ファイルが破損していると思われる場合、または PDF のツリー情報を確認したいだけの場合は、簡単な方法があります。

PDFデバッガー、ウクライナの Yevhenii Hyzyla によるシンプルな Web ツールを使用すると、まさにそれが可能になります。使い方は簡単です。Mac の Finder から PDF ファイルをページ上のドロップ ペインにドラッグ アンド ドロップするだけで、ファイルの PDF ツリー情報が読み取られて表示されます。

PDF を PDF デバッガー ページにドロップすると、そのツリー情報が表示されます。

PDF デバッガーは PDF の内容全体を表示しませんが、16 進エディターまたはその他の生データ リーダー アプリを使用して表示することができます。

他のユーティリティでは PDF を .ps ファイルに変換できるため、PostScript を直接読み取ることができます。

PDF デバッガーを使用すると、PDF ファイルの基本構造を迅速かつ簡単に検証できます。

Hyzyla には、Node.js JavaScript エンジンのラッパー ライブラリもあります。GitHubページこれは、WebAssembly で記述された Google の高性能 PDFium ライブラリを使用します。