PDFの仕様について
開発部の野村です。
最近、電子認証関係の仕事をすることが多かったので、今回は、登記・供託オンライン申請システムで採用されているPDFについて、お話をしたいと思います。
私が初めてPDFを触ったのは十数年前、2003年にリリースされた電子認証キットの初版(当時の名称は『商業登記に基礎を置く電子認証の電子証明書取得・管理ソフト』)でPDF署名プラグインの開発を担当したときでした。その当時、PDFはまだ国際標準規格ではなく、Adobe Systems社が規定したファイル形式でしかありませんでした。しかし、PDFの仕様書とビューアを無償で公開するというAdobe社の普及戦略により、異なるプラットフォーム間で文書を共有する際のファイル形式として、すでにデファクトスタンダードになっておりました。
もちろんAdobe社の戦略だけではデファクトスタンダードにはなれません。PDFの仕様自体が優れたものでした。異なるプラットフォーム間での文書共有には、クリアすべき問題が色々あります。特に問題になってくるのが文書で使用されるフォントです。
例えば、Word文書では、文書内で使用されたフォントがPC上にない場合、Wordはそのフォントに近いイメージのフォントを使用して表示します。フォントが変わると文字の外観が変わってしまい、文書のレイアウトが崩れることがありますし、文字によっては字形が変わったり、最悪の場合は文字化けをおこします。
これは、文書共有フォーマットとしては致命的です。PDFでは、PDFファイル自体にフォント情報を埋め込むことができるようになっていますので、このフォントの問題は発生しません。どのPCで表示しても、同じ字形、同じレイアウトで表示することができるのです。
さらに、PDFの仕様には、既存のファイルに文字や画像などを追加する場合の保存形式として、「増分更新」が定義されています。増分更新されたPDFには、「変更前のPDFの内容」と「変更による差分情報」が記録されています。簡単に説明すると、「変更前のPDFの内容」は、変更前のPDFファイルそのものです。バイナリエディタでこの領域のみを取り出し、ファイルとして保存すると、変更前のPDFファイルになります。もう一方の「変更による差分情報」には、変更前のPDFに対して、追加された情報と削除された情報の全てが記録されています。
この増分更新を利用すれば、PDFがどのように変更されたかがPDF自体に記録されるため、アプリケーションに依存することなく、変更箇所の確認が行えます。
PDF署名では、この増分更新がとても重要な役割を果たしています。Acrobatに限らず、PDF署名機能を持つアプリケーションでPDFに署名を行うと、署名を1つだけ含んだPDFが作成され、署名後の変更分は必ず増分更新として保存されるようになっています。
これはPDFの仕様として、署名済みPDFに対して何らかの変更を行なった場合は必ず増分更新として保存することが規定されているためです。増分更新では、追加された情報と削除された情報の全てが記録されていますので、この情報を確認するだけで、署名後にPDFの変更がなされたかを簡単に検出できるようになっています。
この他にも、PDFでは文書共有のための様々な工夫がされており、知れば知るほど面白い仕様になっています。PDFの仕様書はボリュームがあり、Acrobatがバージョンアップされるたびに追加されるので、全て読むのは大変ですが、アプリケーションのデータ構造を考える上でとても参考になります。