注)PDFリーダーは、Foxit PDF Readerをお使いください
情報収集
PDFのマニュアルを入手する
- 「pdfreference1.7」で検索すると見つかります。下記にリンクを張っておきます
- https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/pdfreference1.7old.pdf
構造の解説
- ヘッダ
- PDFのバージョン
- 「#PDF-1.3」
- 「1」はメジャーバージョン
- 「3」はマイナーバージョン
- 「#PDF-1.3」
- 4つ以上のバイナリ文字を含むコメント行がある場合は、バイナリデータあり
- PDFのバージョン
- ボディ
- 「1 0 obj」で始まります
- 「1」はオブジェクト番号
- 「0」は世代番号
- 辞書オブジェクト
- 「<<」は辞書の開始
- 「Length」はstreamからendstreamまでバイト数(無くても大丈夫。エラー無く表示出来ます)
- 「>>」は辞書の終了
- ストリームオブジェクト
- 「stream」は開始
- 内容を記載:例
- 「10 10 m」x:10 y:10にmove to
- 「S」show
- 「endstream」終了
- 「1 0 obj」で始まります
- クロスリファレンステーブル(無くても大丈夫。エラーなく表示できます)
- 「xref」で始まります
- 「05」は、リファレンス数です
- 「0000000000」は先頭からのバイト数
- 「00000」は世代番号です
- トレーラ
- 「trailer」で始まります
- 「/Size 5」は最大のオブジェクト番号(4)+1 です
- 「/Root 1 0 R」開始するオブジェクト番号です
- 「startxref 999」999は先頭からクロスレファレンスまでのバイト数。
- 面倒なので、「0」を入れても大丈夫。エラーなく表示できます
- ヘッダ
上記説明をもとに通常のPDFを省略してみました
- 縮小版ですが最近のアクロバットではエラーになりました Foxit PDF Readerでは、大丈夫です
通常(間接オブジェクト) | 縮小版 (直接記述 テーブル省略も可能) |
---|---|
%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-1.3 1 0 obj << /Type /Catalog /Pages << /Type /Page /MediaBox [ 0 0 210 300 ] /Contents << >> stream 10 10 100 100 re S endstream >> >> endobj trailer << /Root 1 0 R >> %%EOF |
図形の書き方
- 詳細は、PDFのマニュアルのAPPENDIX A Operator Summaryを参照してください
- 基本図形
Path | 備考 | |
---|---|---|
移動 | m | Begin new subpath |
線 | l | Line segment to path |
カーブ | c | Curved segment to path (three control points) |
文字 | Tj T* | Show text |
サンプル
- 文字の定義を追加しています
- Foxit PDF Reader以外でも大丈夫です
%PDF-1.7 1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj 2 0 obj << /Type /Pages /Kids [4 0 R] /Count 1 >> endobj 3 0 obj << /Font << /F0 << /Type /Font /BaseFont /Helvetica /Encoding/WinAnsiEncoding /Subtype /Type1 /FontDescriptor 6 0 R >> /F1 << /Type /Font /BaseFont /Helvetica-Bold /Encoding/WinAnsiEncoding /Subtype /Type1 /FontDescriptor 7 0 R >> /F3 << /Type /Font /BaseFont /GothicBBB-Medium /Subtype /Type0 /Encoding /90ms-RKSJ-H /DescendantFonts [9 0 R] >> >> >> endobj 6 0 obj << /Ascent 718 /CapHeight 718 /Descent -207 /Flags 32/ FontBBox[-166 -225 1000 931] /FontName/Helvetica /ItalicAngle 0 /StemH 88 /StemV 88 /Type/FontDescriptor /XHeight 523 >> endobj 7 0 obj << /Ascent 718 /CapHeight 718 /Descent -207 /Flags 262176 /FontBBox[-170 -228 1003 962] /FontName/Helvetica-Bold /ItalicAngle 0 /StemH 140 /StemV 140 /Type/FontDescriptor /XHeight 532 >> endobj 8 0 obj << << /Ascent 718 /CapHeight 718 /Descent -207 /Flags 32/ FontBBox[-166 -225 1000 931] /FontName/SymbolMT /ItalicAngle 0 /StemH 88 /StemV 88 /Type/FontDescriptor /XHeight 523 >> >> endobj 9 0 obj << /Type /Font /Subtype /CIDFontType0 % /BaseFont /KozGoPro6N-Regular /BaseFont /GothicBBB-Medium /CIDSystemInfo << /Registry (Adobe) /Ordering (Japan1) /Supplement 6 >> /FontDescriptor 10 0 R >> endobj 10 0 obj << /Type /FontDescriptor /BaseFont /KozGoPro6N-Regular /FontName /GothicBBB-Medium /Flags 4 /FontBBox [-437 -340 1147 1317] /ItalicAngle 0 /Ascent 1317 /Descent -349 /CapHeight 742 /StemV 80 >> endobj 4 0 obj << /Type /Page /Parent 2 0 R /Resources 3 0 R /MediaBox [0 -12 520 746] /Contents 5 0 R >> endobj 5 0 obj << >> stream 0 0 00 K 0 i 1 J 1 j []0 d -0.4 Ts endstream endobj xref trailer << /Size 6 /Root 1 0 R >> startxref 0 %%EOF
- 手作業で作成したPDFは「pdftk」で変換してから皆さんに配布して下さい
- 省略した部分が正しく記載されています