PDF について
PDF は「Portable Document Format」の略です。
2020年現在では、PDF の基本バージョンとして、1.1 から 1.7 までが存在します。
元々は Adobe が独自に定義した規格でしたが、2008年には、国際標準化機構 (ISO) により、PDF 1.7 が ISO 32000-1 として標準規格化されました。
それ以降、Adobe 独自によるバージョンアップは、ベースとなる PDF 1.7 に対する拡張という形で行われています。
また、2017年には PDF 2.0 が制定されています。
PDF に関連した規格としては、他に PDF/X や、PDF/A などがあります。
これらは、PDF の指定バージョンをベースとして、一部の機能が制限されています。
PDF/X は印刷を目的としたもので、日本の印刷所においては、PDF/X での入稿を推奨している所が多くあります。
PDF/A は電子文書の長期保存を目的としたもので、主に欧州を中心に使われています。
フォーマットとしての違いはなく、基本的に通常の PDF と同じ仕様になりますが、一部で独自の値を追加したりする必要があります。
ここでは、PDF/X についても説明していきます。
2020年現在では、PDF の基本バージョンとして、1.1 から 1.7 までが存在します。
元々は Adobe が独自に定義した規格でしたが、2008年には、国際標準化機構 (ISO) により、PDF 1.7 が ISO 32000-1 として標準規格化されました。
それ以降、Adobe 独自によるバージョンアップは、ベースとなる PDF 1.7 に対する拡張という形で行われています。
また、2017年には PDF 2.0 が制定されています。
PDF に関連した規格としては、他に PDF/X や、PDF/A などがあります。
これらは、PDF の指定バージョンをベースとして、一部の機能が制限されています。
PDF/X は印刷を目的としたもので、日本の印刷所においては、PDF/X での入稿を推奨している所が多くあります。
PDF/A は電子文書の長期保存を目的としたもので、主に欧州を中心に使われています。
フォーマットとしての違いはなく、基本的に通常の PDF と同じ仕様になりますが、一部で独自の値を追加したりする必要があります。
ここでは、PDF/X についても説明していきます。
バージョン
PDF を作成する際には、任意のバージョンを指定して使うことが出来ます。
バージョンによって使える機能が異なるため、使用したい機能に応じて、適切なものを使ってください。
(実際に PDF が読み込まれた時に、どのように処理されるかは、アプリケーションによって異なる場合があります)
PDF を読み込む側では、すべての PDF バージョンに対応しているとは限らないため、互換性の観点から考えると、古いバージョンを使った方が、より多くのアプリケーションで読み込めます。
各バージョンによる主な変更点は、以下のようになっています。
基本的に PDF 1.2 以降を使った方が良いでしょう。
日本語フォントを埋め込むなら、最低でも PDF 1.3 が必要になります。
バージョンによって使える機能が異なるため、使用したい機能に応じて、適切なものを使ってください。
(実際に PDF が読み込まれた時に、どのように処理されるかは、アプリケーションによって異なる場合があります)
PDF を読み込む側では、すべての PDF バージョンに対応しているとは限らないため、互換性の観点から考えると、古いバージョンを使った方が、より多くのアプリケーションで読み込めます。
各バージョンによる主な変更点は、以下のようになっています。
1.0 | 初期バージョン |
---|---|
1.1 | 暗号化 |
1.2 | zlib/deflate による圧縮。 Unicode 対応。 |
1.3 | CJK フォントの埋め込み |
1.4 | 透明の概念を追加。 JBIG2 画像圧縮。 OpenType フォント対応。 |
1.5 | JPEG2000 画像圧縮 |
1.6 | 3D アートワーク。 OpenType フォントの埋め込み |
1.7 | (細かい変更) |
基本的に PDF 1.2 以降を使った方が良いでしょう。
日本語フォントを埋め込むなら、最低でも PDF 1.3 が必要になります。
PDF の仕様書
PDF の仕様書は Adobe によって公開されています。
1.7 の場合は、以下の URL でダウンロードできます。
https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf (ISO による定義)
https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf (Adobe による定義)
上記2つの内容はほぼ同じですが、上の方が新しいです。
古いバージョンのファイルもありますが、リンク先などが記載されていないので、以下のサイトを参考にしてください。
アメリカ議会図書館 (PDF family)
もしくは、InternetArchive の方で、Adobe の以前のページをご覧ください。
https://web.archive.org/web/20200917072832/https://www.adobe.com/devnet/pdf/pdf_reference_archive.html
1.7 の場合は、以下の URL でダウンロードできます。
https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf (ISO による定義)
https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/pdf_reference_1-7.pdf (Adobe による定義)
上記2つの内容はほぼ同じですが、上の方が新しいです。
古いバージョンのファイルもありますが、リンク先などが記載されていないので、以下のサイトを参考にしてください。
アメリカ議会図書館 (PDF family)
もしくは、InternetArchive の方で、Adobe の以前のページをご覧ください。
https://web.archive.org/web/20200917072832/https://www.adobe.com/devnet/pdf/pdf_reference_archive.html
PDF ファイルの概要
まずは、PDF ファイルがどのように構成されているかを説明します。
PDF の基本的な構文はテキストで表されますが、ファイル内には、バイナリデータをそのまま格納することもできます (テキストとバイナリの混合)。
ファイル内をすべてテキストのみで記述することもできますが、その場合はファイルサイズが増大するため、通常はバイナリデータも使います。
以下は、すべてテキストのみで記述した場合の PDF ファイルの中身です。
ページは1つのみで、左下に四角形を描画しています。
PDF の基本的な構文はテキストで表されますが、ファイル内には、バイナリデータをそのまま格納することもできます (テキストとバイナリの混合)。
ファイル内をすべてテキストのみで記述することもできますが、その場合はファイルサイズが増大するため、通常はバイナリデータも使います。
以下は、すべてテキストのみで記述した場合の PDF ファイルの中身です。
ページは1つのみで、左下に四角形を描画しています。
例
>> 01.pdf
(保存する場合は、右クリックで名前を付けて保存してください)
(保存する場合は、右クリックで名前を付けて保存してください)
%PDF-1.3 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 2 0 obj << /Type /Pages /Kids [ 3 0 R ] /Count 1 >> endobj 3 0 obj << /Type /Page /Parent 2 0 R /MediaBox [ 0 0 612 792 ] /Contents 4 0 R >> endobj 4 0 obj << /Length 18 >> stream 10 10 100 100 re S endstream endobj xref 0 5 0000000000 65535 f 0000000009 00000 n 0000000062 00000 n 0000000128 00000 n 0000000227 00000 n trailer << /Size 5 /Root 1 0 R >> startxref 296 %%EOF
上記のテキストをコピー&ペーストして、テキストエディタで "〜.pdf" というファイル名で保存した場合、PDF として開けない場合があります。
ファイル内では、オブジェクトなどの位置を、バイト単位のオフセット位置で指定している部分があります。
上記では改行を 1 byte として扱っていますが、Windows などにおいて、改行が CR+LF の 2 byte として保存されてしまうと、オフセット位置がずれてしまうため、正しく開けなくなります。
ファイル内では、オブジェクトなどの位置を、バイト単位のオフセット位置で指定している部分があります。
上記では改行を 1 byte として扱っていますが、Windows などにおいて、改行が CR+LF の 2 byte として保存されてしまうと、オフセット位置がずれてしまうため、正しく開けなくなります。
PDF ファイルの構成
PDF ファイル内は、大きく分けると、
「ヘッダ」「ボディ」「クロスリファレンステーブル」「トレーラー」
の4つの部分で構成されています。
上記の例の場合、
"%PDF-1.3" が ヘッダ、
それ以降から "xref" までが ボディ、
"xref" から "trailer" までが クロスリファレンステーブル、
"trailer" 以降が トレーラー となります。
なお、PDF ファイルは後から編集することができます。
その場合は、元の内容を保持したままで、ファイルの末尾に、新しいボディやクロスリファレンステーブル、トレーラーを追加記述することで、内容を更新させることができます。
「ヘッダ」「ボディ」「クロスリファレンステーブル」「トレーラー」
の4つの部分で構成されています。
上記の例の場合、
"%PDF-1.3" が ヘッダ、
それ以降から "xref" までが ボディ、
"xref" から "trailer" までが クロスリファレンステーブル、
"trailer" 以降が トレーラー となります。
なお、PDF ファイルは後から編集することができます。
その場合は、元の内容を保持したままで、ファイルの末尾に、新しいボディやクロスリファレンステーブル、トレーラーを追加記述することで、内容を更新させることができます。