« 2006年02月16日 | メイン | 2006年02月18日 »

2006年02月17日

GDIをバイパスして高精細なPDFを作成 – PDFの作成方法(23)

PDFの中で線の幅は、論理的な寸法指定で表現します。従って、極論すればコンピュータで扱うことのできる数値であればどんな細い線でも表現することができます。

しかし、一方、Windowsのアプリケーションでは表示・印刷デバイスはGDIを経由して取り扱う必要があり、GDIでは解像度によって表現できる精度に限界があることを説明しました。

では、2月13日に示しましたような、線幅0.01ポイント(0.0035mm)というような細い線をPDFに正しく設定するにはどうしたら良いでしょうか?

方法は、二通りあります。
(1) PostScriptプリンタ・ドライバを使ってPostScriptを出力し、PostScriptからPDFを生成する。但し、アプリケーションはGDIをバイパスしてPostScript命令を直接出力できること。
(2) アプリケーションからGDIに関係なく、直接PDFの命令を出力してPDFを作成する。

前提条件として、(1)、(2)ともアプリケーションが、GDIをバイパスして出力する機能を実装している必要があります。従って、任意のアプリケーションでできるという訳ではありません。

アンテナハウスのXSL Formatterは、上の(1)、(2)の両方の方法を実装しています。

図1 GDIと関係なくPDF生成ライブラリーの関数(API)を使ってPDFを出力
PDFCreator.PNG
アンテナハウスのPDF生成ライブラリーはOEMで提供しています。関心をお持ちの方は、oem@antenna.co.jp までどうぞ。

図1の方法で出力したPDFファイル:Download


図2 PostScriptプリンタ・ドライバに対して直接PostScriptを出力
DirectPostScript.PNG

図2の方法で出力したPDFファイル:Download
※このPDFはAcrobatのプリンタ設定を72dpiにしてみましたが、それにも関わらず、細い線も精確に出力されます。拡大することで確認できます。

PostScriptプリンタというのは、Windowsでは別格の扱いになっていますので、このようなこともできるのですね。また、アプリケーションからAcrobatをPostScriptプリンタ・ドライバとして認識できますので、GDIをバイパスして、Acrobatにどんな細い線幅でも出力することができます。昨日の出力試験では、Microsoft Wordはそれをやってないようなのですが。これは謎です。

いずれにしても、上のいずれかの方法を使えば、WidnwosでGDIの機能的制約を受けることなく、PDFで設定可能な機能を自由に使いこなしたPDFを作成できることになります。

投票をお願いいたします

投稿者 koba : 08:00 | コメント (0) | トラックバック