fbpx

PDFってこうなってる? 実践でPDFの内部構造を学ぼう Part3:自作のPDFを作成する

前回はテキストエディタを使ってPDFファイルの構造を作る方法を学びました。今回はさらに一歩進んで、実際にPDFを作ってみましょう。ただし、最初に作るPDFには一つだけ問題があります。それは、実際には機能しないということです。でも心配しないでください。Acrobat PDFビューアが、問題の原因を特定するためのヒントとなるエラーメッセージを表示してくれます。このエラーメッセージを手がかりに、機能するPDFファイルを作るための基礎を学ぶことができるのです。用意するものはテキストエディタと、バイナリエディタ(16進数エディタ)だけ。私はHxDというバイナリエディタを使用しています。
Part3:自作のPDFを作成する

まず、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<</Size 2 /Root 1 0 R>>
startxref
				
			

クロスリファレンステーブルのアドレス(xrefキーワードがバイトで始まる位置)が必要で、ここでは32です。ファイルを %%EOF で締めくくります。

				
					%PDF-2.0
1 0 obj << >>
endobj
xref
0 2
0000000000 65535 f
0000000010 00000 n
trailer <</Size 2/Root 1 0 R>>
startxref
33
%%EOF
				
			

このPDFをmypdf2.pdfとして保存します。Windows版のAcrobatでこれを開き、Ctrlキーを押しながらOKボタンを押すと別のエラーが表示されます。「dictオブジェクトを指定してください。」というメッセージが表示されるのは、値を何も入れていないためです。

Ctrlキーを押しながらOKボタンを押す。※Mac版では動作しません。

PDFアプリ開発ツール(SDK)をお探しのみなさま、効率のよい開発作業のためにJPedal、BuildVu、JDeliがきっとお役に立つことと思います。
これら3製品は無料で試用していただけますので、まずはお試しのうえ、ぜひ導入をご検討ください。
JPedal、BuildVu、JDeliのシステム開発やプログラミング、無料トライアルの情報は下記の各製品のトライアルページをご覧ください。技術的なことから費用面まで、ご質問・ご相談も各製品ページの問合せボタンからお寄せください。

    Facebook
    Twitter
    Email
    公式ブログロゴ

    製品に関する記事や開発者のブログ

    PDF用語集

    この記事ではPDF関連の一般的な用語を網羅し、それぞれの定義を解説します。

    PDFメタデータとは?開発者が知っておくべき基礎知識

    PDFファイルを扱う際、「メタデータ」という言葉を耳にすることが多いでしょう。メタデータとは、ドキュメントに関する情報を指し、ファイルの作成者や作成日、使用されたソフトウェアなど、ドキュメントを説明する情報が含まれています。この記事では、開発者向けにPDFメタデータの基本からその利用方法までをわかりやすく解説します。

    PDFを最適化して軽量化!使われないオブジェクト削除で得られる驚きの効果

    Javaでシステム開発を行う中で、PDFファイルのサイズが予想以上に大きくなり困った経験はありませんか?その原因の一つに「使われないオブジェクト」の存在があります。今回は、Javaの開発者でJPedalのプロダクトマネージャーのJacob氏の記事を元に、使われないオブジェクトとは何か、その削除方法、削除によるファイルサイズの削減効果、そしてその他のメリットについて解説します。

    PDFファイルを扱うシステム開発・ウェブ開発に役立つ

    開発者向けPDF入門ガイド

    開発者向けPDF入門ガイド

    PDFの基礎から応用まで開発者のための入門ガイド2024年版

    PDF の仕様や活用方法など、開発者に必要な情報がコンパクトにまとめました。初めてPDFを扱う開発者にも分かりやすく、基礎から応用までカバーしているため、PDF のポテンシャルを最大限に引き出し、アプリケーション開発やドキュメント管理の効率化を図るための手引きとなるでしょう。技術的な側面に興味がある開発者だけでなく、ビジネスでPDFを有効活用したい方にもおすすめの一冊です。

    MENU
    PAGE TOP