まず、mypdf.pdf という新しい空のファイルを作成します。ファイルが作成できたら、Adobe Acrobat Readerで開いて何と言われるか見てみます:
「Adobe Acrobat Reader で「mypdf.pdf」を開けませんでした。ファイルの種類がサポートされていないか、またはファイルが破損している可能性があります。例えば、電子メールの添付文書として送信され、正しくデコードされなかったことなどが考えられます。」
予想通りのメッセージですが、将来的にこのメッセージが機能しているはずのPDFから出た場合、そのPDFはいくらか問題があると確信できます。
次に、バージョン番号のみが必要なヘッダーパートを追加します:%PDF-2.0
さらに、すべてのオブジェクトが格納されるボディセクションがあります。このセクションでは、ただ一つのオブジェクト、つまり何も入れない辞書オブジェクト(オブジェクト番号1)を持ちます。
%PDF-2.0
1 0 obj<< >>
endobj
次に、クロスリファレンステーブルセクションが必要です。まずxrefキーワードが必要です。次にリストの最初のオブジェクト番号とファイル内のオブジェクトの総数を記入します。ここまでで2つのオブジェクト、ボディセクションにある1 0 obj
と、Part 2で説明した連結リストの先頭であるオブジェクト0があります。よって 0 2
という行になります。続くエントリにはオブジェクトに関する情報が含まれており、すべて同じ形式を取ります。
xref
0 2
0000000000 65535 f
0000000010 00000 n
オブジェクト1のアドレスを10としています。各文字がバイトであるため、%PDF-2.0
と改行文字を数えるのはかなり簡単ですが、確認したい場合はHxDでファイルを開き(幅を10に、数値システムを10進数に設定して簡単にします)、1 0 obj
の1をクリックして1 0 obj
の開始アドレスを取得できます。
最後に必要なのはトレーラーセクションです。startxrefと、ファイルのオブジェクト数とルートオブジェクトへの参照を含むトレーラーディクショナリが必要です。
trailer<>
startxref
クロスリファレンステーブルのアドレス(xrefキーワードがバイトで始まる位置)が必要で、ここでは32です。ファイルを %%EOF
で締めくくります。
%PDF-2.0
1 0 obj << >>
endobj
xref
0 2
0000000000 65535 f
0000000010 00000 n
trailer <>
startxref
33
%%EOF
このPDFをmypdf2.pdfとして保存します。Windows版のAcrobatでこれを開き、Ctrlキーを押しながらOKボタンを押すと別のエラーが表示されます。「dictオブジェクトを指定してください。」というメッセージが表示されるのは、値を何も入れていないためです。
Ctrlキーを押しながらOKボタンを押す。※Mac版では動作しません。
PDFアプリ開発ツール(SDK)をお探しのみなさま、効率のよい開発作業のためにJPedal、BuildVu、JDeliがきっとお役に立つことと思います。
これら3製品は無料で試用していただけますので、まずはお試しのうえ、ぜひ導入をご検討ください。
JPedal、BuildVu、JDeliのシステム開発やプログラミング、無料トライアルの情報は下記の各製品のトライアルページをご覧ください。技術的なことから費用面まで、ご質問・ご相談も各製品ページの問合せボタンからお寄せください。