2007年03月20日

PDF Viewer SDK の利用例 — PDFを画像のように取り扱う

PDF Viewer をアプリケーションに組み込んだ例として、XSL Formatterを紹介してみたいと思います。

アンテナハウスのXSL Formatterでは、PDFを画像ファイルの一つの形式として、次のような利用ができます。

1.PDFを画像ファイルの一種として、EPSなどと同じように扱う。
2.PDFのページの全画面の背景画像として利用する。
3.既存のPDFと新たに組版したページを結合して新しいPDFを作る。

1.3.の機能につきましては、2006年12月10日XSL Formatter V4.1 の新機能ご紹介でお話しました。従来であればEPS(Encapsulated Postscript)形式で埋め込んでいたイラスト図形などをPDFで埋め込むことができます。そして、この埋め込まれたPDFをXSL FormatterのGUIで表示して確認することができます。
2.の機能につきましては、2007年02月21日 雛形PDFにデータを差し込みして、新しいPDFを作成でお話しました。

今日は、こうして組み込みしたPDFをXSL FormatterのGUIで表示できることをご説明したいと思います。

例として予め次のようなPDFを作成し、それをページの一部に埋め込んでみます。

埋め込みしたい画像としてのPDFファイルをダウンロード
XSL-FOで画像を埋め込む部分のFO
<fo:flow flow-name="xsl-region-body" font-family="sans-serif" font-size="20pt">
 <fo:block >
 PDFをページの一部に取り込み。
 </fo:block>
 <fo:block>
 content-height="50%"</fo:block>
 <fo:block border-style="solid" border-color="rgb(255,0,0)">
  <fo:block>
   <fo:external-graphic src="Comparison.pdf" content-height="50%"/>
  </fo:block>
 </fo:block>
 <fo:block space-before="2em">
 content-height="30%"</fo:block>
  <fo:block border-style="solid" border-color="rgb(255,0,0)">
  <fo:block>
   <fo:external-graphic src="Comparison.pdf" content-height="30%"/>
  </fo:block>
 </fo:block>
</fo:flow>

上のFOを組版して、XSL FormatterのGUIで表示したところ
20070319.PNG

このように、PDFをEPSなどの画像ファイルの代わりに使うことができ、そして、それを画面に表示して確認することができます。この画面表示には、PDF Viewer SDKを使用しています。

上の組版結果から出力したPDF
念のために、上の組版結果をPDFに出力してみますと、次のようになります。
ファイルをダウンロード

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

2005年11月17日

EPS(Encapsulated PostScript) 続き

印刷用PDFを作る際に、EPS対策として考えられることは、

(1)EPSの中のPostScript部分を取り出して、PDF中に埋め込む。
(2)EPS画像を予めSVGなどのほかのベクトル画像に変換しておく。あるいは、EPSではなく、SVGで画像を用意してもらう。
(3)EPS画像を予めPDF化しておき、本文のPDFの中に画像部分のPDFを埋め込む。

など、幾つかあります。今日は、これについて話しましょう。

(1)は、PDFの中に、画像部分だけPostScript命令を埋め込んでしまうことになります。PostScript XObjectsを使います。これを実際にやっているPDFソフトもあったと思います。(いまちょっと思い出せないですが)。しかし、これは、PDF Referenceでは、非推奨の方法とされています。

(2)は、理論的には一番適切だろうと思います。SVGもベクトル画像で、PDFと親和性も高いので、SVGで書かれたグラフィックスをPDF中にベクトル画像として埋め込むのは簡単です。また、PostScriptインタープリターは完全に排除できます。しかし、実際は理屈どおりに行かないもので、例えば、アドビシステムズのIllustratorの出力するSVGは、オリジナルのイラストを忠実に再現していない部分もあります。これまでいくつか問題が報告されています。CorelのSVGの方がむしろ品質が良いと言っている人もいました。まあ、こういう状況はバージョン・アップで変わっていくでしょうが。

SVGがもっと普及して、Illustratorなどのグラフィックス・ソフトが完璧なSVGを生成できるようになれば、この方法が一番、実用的になると思います。現状では、SVGを作成するソフトとSVGを解読するソフトの間の互換性に注意して採用しなければなりません。

(3)は、EPSファイルをまとめてPDF化する過程で、AcrobatまたはPostScript互換のインタープリタを使うPDF作成ソフトが必要となります。しかし、一旦EPS形式のイラストをPDF化して用意しておけば、後は、もう、PostScriptインタープリターは不要となります。

そんな訳で、アンテナハウスのPDF生成ソフトには、PDF中にPDFを埋め込むための機能を用意しています。マニュアルなどのPDFをオンデマンドで生成する、という応用の際には、現時点で、一番実用的な方法ではないかと思っています。

このアイデア、自分達で知恵を絞って考えたんですが、その後、競合する製品でも同じことをしているのに気が付いて、「ああ、やっぱり、アソコの会社の人も同じことに苦しんだんだな」と思って、妙な連帯感を持ったものです。

私は、PostScriptは、TeXと同じで既に過去の技術になっていると思うのです。しかし、EPSがあるためにPostScriptインタープリターを手放せない、ということになっています。EPSに変わるものとしてSVGに期待するところが大きいのですが。

【参考】
PDF Reference Version 1.6, 4.7.1 PostScript XObjects より:
PDF1.4以降、アドビのPostScript言語のイメージ・モデルの特徴を全て包含したので、PostScript XObjectsの存在理由はなくなった。この機能は将来のバージョンで削除されることになるだろう、とあります。

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

2005年11月16日

EPS(Encapsulated PostScript)

さて、EPSという言葉が、11月14日11月15日と2日連続で出てきました。

EPSは、PostScriptを使わないでPDFを作る技術の、恐らく一番の泣き所です。

EPSという言葉は、グラフィックス・デザイナーやDTPの仕事をしている人なら良く知っている言葉なので、今更、説明することもないようなものですが、その仕組みを知らない人が意外に多いようです。XSL Formatterの技術サポートへの質問は、EPS関係の問題が時々あります。

アドビシステムズのIllustratorを初めとしてプロ向けのグラフィックス処理ソフトは、データ交換用にEPS形式を使うものが主流です。このため、EPS形式は高度なグラフィックスの標準的な形式となっています。商業印刷のソフトにはEPS処理機能は必須です。

商業印刷のみではなく、マニュアルなどの技術文書を作成する際にも、グラフィックス・データをEPS形式にして使うことが多いようです。イラストを別のソフトで作成し、それをEPSファイル化して持ってきて、マニュアル本文中に図形として組み込むわけです。

EPSのファイルは、PostScriptによるページ記述命令と、そのページのプレビュー・イメージの両方を1パッケージ化できるようになっています。プレビュー・イメージはPostScript命令からページ内容をレンダリングする機能をもたないソフトでも、EPSファイルの内容を表示できるようにするためのもの。EPSファイルを作成する時に、オリジナル作成ソフトが用意して埋め込むのが普通です。

Webなどで配信するPDFを作成する際は、グラフィックス部分にはEPSファイルからプレビュー・イメージを取り出してPDFに埋め込めば良いのです。しかし、印刷用のPDFを作成するには、EPSファイルからプレビュー・イメージを取り出して埋め込むのは不適切です。プレビュー・イメージでは解像度が低すぎて、綺麗に印刷できないからです。

また、EPSファイルにはプレビュー・イメージがないものもあります。その時、EPSファイルのPostScript部分からプレビュー・イメージを作り出さねばなりません。GostScriptをEPSにプレビューをつけるために使っているとコメントされた方がいましたが、11月9日のコメント、EPSの中のPostScript命令を解読してページをレンダリングするにはPostScript(または互換)インタープリターが必須となります。

つまり、PostScript非依存にしたつもりなのに、EPSがあるとPostScript(または互換)インタープリターが必要になってしまうんですね。

この問題をどうやって回避するか。PostScritpに依存しないPDF生成ソフトを提供しているベンダーにとって、EPS対策は知恵の絞りどころとなっています。

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