さまざまなPDFの作成技術の概観

最終更新日: 2006/5/5

目次

はじめに

PDFの作成方法は、アドビシステムズのDistillerから始まったと言って良いと思いますが、現在では、サード・パーティ製品を含めて非常に多岐に渡っています。ここでは、それを技術的な仕組みという観点でまとめてみました。この文書は、「PDF千夜一夜」からPDFの作成方法についてのお話をピックアップして整理したものです。特に、問題がない限り、今日、あるいはx日という記述はそのまま残していますのでご了承ください。但し、内容的な不足・誤りについてはできるだけ加筆・訂正に努めました。

PDFの作成方法 – 全体の仕組み

今日は、PDFファイルを作成する仕組みについて簡単に説明しましょう。自分は、仕組みを知らなくても使えれば良いという人も多いとは思いますが、PDF製品を選択する上でも、仕組みを知っておいても損はないのではないでしょうか。

PDFファイルを作るソフトは世界中に一杯ありますが、それぞれの仕組みは公開されていません。また、使いやすいソフトは、内部が複雑な仕組みになっていても、それをユーザに隠して簡単に使えるようにしています。このことは、ユーザに見える、表面的に現れる名前からだけでは、仕組みは分からないことを意味します。

また、ソフトウェアは機械と違って分解して仕組みを調べることができません。しかし、大雑把に言って、Windowsの環境では、次の図の、①と②の組み合わせ、③、④、⑤の経路のどれかで作成する仕組みになっていると考えて間違いないでしょう。

アップルのMac OS Xでは、Quartzという描画エンジンからPDFへの直接変換ができますので、少し事情が違うと思います。また、Unix、Linuxでも異なるでしょう。

CreatePDF.png

図の①から⑤の経路を簡単に説明します。

  1. アプリケーションからPostScriptプリンタ・ドライバを使ってPostScriptファイルを作る。(図①)
  2. PostScriptファイルをPDFファイルに変換する。PostScriptファイルはまた、Webなどで流通しているPostScriptファイルを使うこともある。(図②)
  3. PostScriptプリンタ・ドライバを使わずに、PostScriptを作成し、あとは、PostScriptをPDFファイルに変換する。(図③)
  4. アプリケーションから、プリンタ・ドライバを通さずにPDFを作成する。(図④)
  5. アプリケーションの「印刷」メニューで見えるPDF作成用のプリンタ・ドライバを使ってPDFファイルを作成する。(図⑤)

上の図について、これから、順を追って説明したいと考えています。

ところで、ドライバ(Driver)って、運転手ではありません。パソコン用語ではドライバは周辺機器を動作させるためのソフトウェアのこと。プリンタを動作させるのがプリンタ・ドライバですが、PDFの場合は周辺機器を使わないのにプリンタ・ドライバということが多いのは、歴史的なものじゃないでしょうか。

PostScriptからPDFへ

PostScriptの登場

PDFの作成方法のひとつめは、PostScriptファイルを経由してPDFを作成する方法です。第一段階でPostScriptプリンタ・ドライバでPostScriptファイルを作成し、第二段階で、PostScriptファイルからPDFへの変換を行う方式です。

まず、PostScriptとはなにかについて簡単に説明しましょう。

回り道が長くなるかもしれませんが、今日の話は、PDFが生まれる前の歴史、いわば前PDF時代のことになります。

プリンタの一種にレーザプリンタがあります。私が初めてレーザプリンタを買ったのは1987年頃だったと思います。アップルのMacintosh Plusに接続するもので、名前はLaser Writerと言い、確か100万円位したものです。それも当時は日本語が使えませんでした。

ここに写真と説明があります:
http://www.mac512.com/lw.htm

Laser Writerはページプリンタの一種です。ページプリンタは次のような働き方をします。簡単にいうと複写機のプリンタ版ですね。

  1. A4、B4など大きさの決まった用紙の1ページ分に印刷する内容のイメージをプリンタ内のメモリに形成する。
  2. そのイメージをプリンタのドラムに転写する。
  3. ついで紙に焼き付けます。

ページプリンタでは、用紙1ページの上に描画する内容を、ページ記述言語という言語を使って記述します。主要なプリンタメーカは、それぞれ独自のページ記述言語をもっています。エプソンのESC/Page、キヤノンのLIPS、ヒューレット・パッカード(HP)のPCLなどが有名です。

プリンタで印刷するページの内容を作り出すのはパソコンです。パソコン側では、ユーザが画面を見ながらページアップした結果を、相手のプリンタがどこのものかによって、ESC/Page、LIPS、PCLなどの中で適合する言語を使って組み立て直して、プリンタに送信します。プリンタ側ではその情報を受け取って、プリンタに埋め込まれたコンピュータで解読してページのイメージを作り出すわけです。

PostScriptというのはアドビシステムズが開発したページ記述言語の製品名です。

PostScriptを使ったプリンタで印刷するときは、パソコンからプリンタにPostScriptファイルが送られます。PostScriptファイルには、1ページ毎に、ページの内容をPostSript言語を使って記述した命令情報が入っています。この命令情報をプリンタ上のPostScriptインタープリタというプログラムで解読して、ページの内容を描画していきます。

最初にアップルがMacintoshのLaser Writer用にPostScriptを採用しました。これは、Macintoshの上で動く、PageMakerというページアップ・ソフトとともに売り出されて、大人気となり、DTPという概念を作り出したわけです。件の100万円のプリンタもDTPをするために購入したものなんです。

PageMakerは、1985年にアルダス社が発売したものですが、1994年に、アドビシステムズがアルダス社を買収したことにより、現在は、アドビシステムズより販売されています。

PostScriptファイルを作る

DTPはMacintoshと共に、華やかに登場し、大人気となりました。それを支えたのがPostScript技術ということになります。アドビシステムズは、アップル以外の多くのプリンタメーカに対してPostScript技術を供給しました。プリンタメーカ各社から出ているPostScriptプリンタには、アドビが開発したPostScriptインタープリタが搭載されている訳です。このPostScriptインタープリタを開発するのは相当に大変です。

PostScriptは1990年代には高級なレーザプリンタ向けのページ記述言語として標準的な地位を占めるようになりました。それだけではなく、さらに高品質が要求される印刷分野では、ほぼ独占的な地位を占めるようになり、ひいては印刷業界の仕事をがらっと変えてしまったわけです。

そして、Macintoshで始まったDTPの波はWindowsにも押し寄せました。

Windows上で動くアプリケーションからPostScriptプリンタを使って印刷するときも、Macintoshと同じように、ユーザがページアップした結果は、パソコン上でPostScript言語に変換されて、プリンタに送られます。

この役割を負うのがPostScriptプリンタ・ドライバです。上述のようにPostScriptが高級DTP分野で事実上の標準になっていることから、Windowsには標準的なPostScriptプリンタ・ドライバが同梱されていますし、また、多くのプリンタメーカから各社専用のPostScriptプリンタ・ドライバを提供しています。また、Acrobatを含め、アドビの製品には同社製のPostScriptプリンタ・ドライバが付いています。

アプリケーションの印刷メニューは、普通、プリンタで紙に印刷する時に使うのですが、プリンタに出力する代わりに、PostScriptプリンタ・ドライバでファイルに出力するとPostScriptファイルができます。PostScriptをファイルに出すことで、印刷会社などとのデータ交換ができるようになります。

具体的には、次の図のように「ファイルへ出力」にチェックします。
GenPS-File.jpg

なお、Windowsの「印刷ダイヤログ」で表示される、プリンタの名前は、分かりやすい名前をつけることができますので「PostScriptプリンタ・ドライバ」と表示されないことがあるかもしれません。

PostScriptファイルは、プリンタ・ドライバを使わないで直接作ることもできます。アドビシステムズはPostScriptの言語仕様を公開し、第三者の開発者がいろいろなアプリケーションを開発することを奨励しました。そこで、パソコンのいろいろなアプリケーションからPostScriptファイルを出力することができるようになりました。また、Unixでは、PostScriptファイルでドキュメントを流通させる習慣がありましたので、古いWebでは資料をPostScriptファイルで公開しているケースもあります。

このようにして、前PDF時代には、PostScriptファイルが、大量に作られて、流通していました。

PDFの発明

昨日お話しましたように、PostScriptファイルがアプリケーションから独立したデータとして流通するようになってきました。しかし、PostScriptファイルには問題もあり、データの交換・共有をもっと簡単にする方法が望まれていたのです。

PostScriptは、出力するのは比較的簡単ですが読むのはとても大変です。加えて、紙への印刷用の一方的出力のために設計されたものですので、画面に表示して、内容をナビゲーションしたり、注釈をつけたりする機能もありませんでした。

PostScriptを元にして、さらにデータを交換する形式として適切なように、またナビゲーションなどが簡単にできるように設計されたのがPDFです。そして、PostScriptをPDFに変換するプログラムとしてAcrobat Distillerが用意されました。

Acrobat Distillerを使うと、PostScriptファイルをPDFに変換することができます。(次の図)

Distilling.jpg

アドビのAcrobat Distillerは、プリンタ用のPostScriptインタープリタをベースにして作られているのではないかと思います。

ところで、distillというのは英語で蒸留するという意味なんですが、Distillerを使ってPostscriptからPDFへの変換することを、distillと表現する人もいます。こんな具合ですね:

In the distilled version, there is... This is using Acrobat 6 for distilling.

AcrobatでPDF

さて、今までの説明ではPostScriptに焦点をあててきましたので、「それじゃあ、PDFを作るには、PostScritptファイルを自分で作らないとだめなのだろうか?」という印象をもたれたかもしれません。

しかし、エンドユーザが簡単に使うだけなら、PostScriptについて特に意識しなくても大丈夫になっています。

最新のAcrobat7では、アプリケーションの「印刷」メニューから表示する「印刷ダイヤログ」で、プリンタ名Adobe PDF を選んで「OK」ボタンを押せば、PDFができるようになっています。

Acrobatがここまで来るには、歴史的変遷もあり、かなりややこしいことになっています。

プリンタの名前は、以前にも言いましたが、メーカが分かりやすく付けることができます。そこで、Acrobat4から以降のプリンタ・ドライバの名前の変遷を辿ると次の表のようになっています。(以下はWindows版についての話です。)

バージョン プリンタ・ドライバ名 インストール時カスタマイズの既定値
Acrobat4 Acrobat Distiller 既定値で on
Acrobat Writer 既定値で on
Acrobat5 Acrobat Distiller 既定値で on
Acrobat Writer 既定値で off
Acrobat6 Adobe PDF
Acrobat7 Adobe PDF

Acrobat4では、PDFWriterとDistillerの2種類のプリンタ・ドライバがあり、両方とも既定値でインストールされました。

Acrobat5で、Acrobat Distillerがプリンタ・ドライバの主流になり、PDFWriterは既定値ではインストールされなくなりました。

Acrobat6以降では、プリンタ・ドライバがAdobe PDFという名前のものひとつだけになりました。

最初、アドビシステムズはDistillerをプリンタ・ドライバではなく、PostScriptからPDFへの変換を行うアプリケーションとして用意しました。Acrobat4、5では、それが、プリンタ・ドライバの名前にも使われていたのですが、Acrobat6以降、Distillerという名前は、プリンタの名前ではなくなり、PostScriptからPDFへの変換を行うアプリケーションのみとなりました。

ほかに、Acrobatには、PDFMakerというものがありますので、さらにややこしくなっています。

なぜ、昔はAcrobat DistillerとPDFWriterの2種類のプリンタ・ドライバがあったのか?そして、今はひとつになってしまったのかなど、いろいろ疑問が沸きますね。

Adobe PDFドライバについて

Acrobat6から、PDFを作成するプリンタ・ドライバの名前は、Adobe PDFになっています。実は、これは、PostScriptプリンタ・ドライバとDistillerを連続で動かすものです。

これを確かめてみましょう。

まず、Wordで簡単な文書を作成し「印刷」メニューからAdobe PDFを選びます。Adobe PDFの印刷ダイヤログで、「ファイルに印刷」を選択します。

○Adobe PDF の印刷ダイヤログで、「Print to file(ファイルに印刷)」をチェックしたところ:
AdobePDF.jpg
(ここで使用しているのは、Acrobat6(英語版)、WindowsはXPです。)

○出力されたファイルをテキスト編集ソフトで開いてみます。すると先頭の部分に次のように書いてあります。

Content.jpg

ですので、これは、PostScriptレベル3のファイルなんですね。つまり、Adobe PDFは、PostScriptプリンタ・ドライバと同じ機能をもつことがわかります。

さらに、このファイルをDistillerでPDFに変換することもできます。

また、Adobe PDFで「ファイルに印刷」にチェックしない(既定値)で実行しますと、PDFファイルができます。

以上のことから、Adobe PDFプリンタを指定すると、ユーザに見えないところでPostScriptを作り出し、それをDistillerを使って、PostScriptからPDF変換を行なっているのだろうと推測できます。

ということは、Acrobat Distillerプリンタ・ドライバの後継がAdobe PDFで、Acrobat Writerはなくなったらしい、といえます。

Distiller互換ソフト

前に話しましたように、アドビはPostScriptインタープリタを、いろいろなプリンタメーカに対して提供しています。しかし、アドビのライセンス料が高額だったことから、他のソフトウェア開発会社から、PostScriptを読んで、PostScritpファイルを描画してイメージにできる互換ソフトがいくつか提供されるようになりました。

そして、それらのPostScriptインタープリタ互換ソフトをベースにして作られたAcrobat Distiller互換のPDF作成ソフトがあります。

その中の一社が、Globalgraphics社Jaws PDF Creatorです。同社のPDF変換ソフトはジャストシステムからもJustSystem PDF Creatorとして販売されています。

PostScriptインタープリタの互換品にはGhostscriptという無償でも入手できるものがあります。(Ghostscriptには商用の有償ライセンス版もあります)。
http://www.ghostscript.com/

GhostscriptにはPDF作成機能も同梱されています。

この無償版を利用して、PostScriptからPDF変換を行なっているのが、無償のPDF作成ソフトとして良く紹介されるPrimoPDFです。

PrimoPDFは、米国のサーバサイドPDFのメーカActivePDF社が、自社の宣伝を主な目的として作成・配布しているようです。

PostScriptを使わないPDF作成

PDFLib

PDFの仕様は公開されているのだから、自分のプログラムの中から直接PDFファイルを書くことはできないだろうか?そのように考える人もいると思います。

もちろん、そのようなこともできます。つまり、PostSciptを経由しなくてもPDFを作ることができるのです。今日はそのことをお話してみましょう。

PDF Referenceを参考にしながら、自前のプログラムから、直接、PDFファイルを書くことは、スキルのあるプログラマならやればできます。しかし、実際に、その人が、自分ですべてをまかなおうとしますとPDFに関する深い知識が必要になります。PDFの仕様は膨大(PDF1.6のReferenceは、本体だけで、1200ページ強!)ですので、簡単なものならともかく、高度なものになりますと、やらなければならないことが多くなり、仕事の生産性もあがりません。

こうしたことから、PDFに関することをまとめて任せてしまえる部品の必要性が生まれます。一般に、こういうプログラム部品をライブラリーと言います。PDFを作成するライブラリーは、全体の仕組みの絵の中の「PDF出力ライブラリー」がそれに相当します。

この種のライブラリーで昔から有名なものに、PDFLibがあります。PDFLib社の創業者Thomas Merz氏は、PDFに関する著書もいくつかあり、PDF業界では有名な方です。PDFLibは、最初のころはソースプログラムが公開されてました。現在では、バイナリのみの配布されていて、試用であれば無料ですが、実際に使用するときはライセンス料金を払わねばなりません。なお、PDFLib Lite版という限定版はソースプログラムも公開されています。

PDFLibは、PostScriptにはまったく依存しないで、上位のプログラムから指示された命令によってPDFを作り出します。これは、現在は、企業内システムやWebシステムに組み込んで、ユーザから入力されたデータ、あるいはデータベースから取り出したデータを使って、サーバサイドで、即時にPDFを作り出すというシステムを構築するのに使われています。

PostScriptを使わないメリットとデメリット

PDFLibは、PostScriptを使わないでPDFを作り出す技術を初めて世に出したものと思います。これに触発されて、現在では、PostScriptを使わないでPDFを作成する製品が非常に増えてきています。

PostScriptに依存しないPDF作成ライブラリーを使って、PDFを直接作り出す場合は、次のようなメリットがあります。

1.PostScritpと比べて高速な処理ができる。アプリケーション→PostScript→PDFという2段階からアプリケーション→PDFの1段階になる。また、PostScriptよりは軽い処理なので早くできる。
2.プリンタ・ドライバのような第3者ソフトを使うのと比べて自由度が高まり、プリンタ・ドライバに依存しない出力の仕方ができる。
3.アプリケーションからPDFのもつ様々な機能を、きめ細かく使用することができる。

逆に、PostScriptに依存しないデメリットとしては、次のようなことがあります。

1.PDFはページの概念をもつメディアなので、アプリケーションがデータからページを作り出す必要があり、どうやってPDF化したいデータのページアップを行なうかが問題である。一般にはぺージの概念を備えたアプリケーションが前提となる。
2.アプリケーションに、PDFを作る命令をひとつずつ組み込むため開発に時間がかかる。
3.EPSという高度なグラフィックス・ファイルの読み込みができない。EPSについては、いくつかの技術的課題 の中で触れて見ます。

PostScriptを使うPDF作成と、PostScriptをまったく使わないPDF作成にはそれぞれ、上に述べたような一長一短があります。

ここでは、DTPからPDFを作りだすという従来の出版・印刷の流れとは別の流れとして、インターネット・システム、イントラネット・システムの中でPDFを大量に生産・消費する仕組みが普及してきている、ということを強調しておきたいと思います。そして、この場合、PostScriptに依存しない技術の方が適切ではないでしょうか。

GDIからPDF作成

GDI型PDFプリンタ・ドライバ

PDFを作成するプリンタ・ドライバには、PostScriptを経由せず、PDFを直接書き出す方式を採用しているタイプのものがあります。これをPostScriptを経由する方式と比較して、GDI型PDFプリンタ・ドライバと呼びましょう。

GDIというのは、Microsoft Windows専用の言葉で、Windowsでディスプレイへの描画やプリンタへ出力する情報を統合的に扱うプログラム・モジュールのことを言います。

Windowsの上で動くアプリケーションは、画面などに絵を描画するときは、GDIに対して命令を発行します。GDI型のPDFプリンタ・ドライバは、このGDI命令を受け取ってPDFの命令にして出力するわけです。

以前に、AcrobatにはAcrobat Writer(PDFWriter)というプリンタ・ドライバがあったが、現在はなくなっていると言いました。

このPDFWriterはGDI型のPDFプリンタ・ドライバと見られます。それは、Acrobat5のヘルプに次のような記述があることから推測できます。

(以下■で囲む項の部分の内容は、Acrobat5のヘルプより抜粋したものです。)

■ここから
PDFWriter の概要
PDFWriter は、他のソフトウェアアプリケーションのファイルを直接Adobe PDF に変換するプリンタ・ドライバです。このユーティリティは、主にテキストで構成されているドキュメントの変換に適しています。どのような場合にPDFWriter を使用すればよいか、ガイドラインを以下に示します。

Microsoft Word やExcel で作成した単純なビジネス文書を変換する場合。
Encapsulated PostScript(EPS)グラフィックが含まれていない文書。
お使いのシステムのRAM 容量が少ない場合。
Distiller で作成するよりも素早くPDF ファイルを作成したい場合。
■ここまで

上の記述の内容は、GDI型のプリンタ・ドライバの一般の特徴を示しています。要はこのようなGDI型のプリンタ・ドライバは、一般ビジネスの用途で、配布・閲覧・資料保存用のPDFを作るのに適しているのです。

このようなGDI型のプリンタ・ドライバは、アドビシステムズ以外からも多数のものが販売・配布されています。

「いきなりPDF」

さて、2004年春にソースネクストが発売した「いきなりPDF」は、衝撃的でした。なにしろ、それまでAdobeのAcrobatは、3万円以上していたのですが、1,980円でPDFを作成できる製品が現れたわけです。

「いきなりPDF」はソースネクストの販売力もあって発売と同時に爆発的に売れたようです。

さて、これは、なんの変哲もない、Windows用のGDI型PDFプリンタ・ドライバをパッケージ化したものですが、「いきなりPDF」の商品化は、次の点で大きな功績があったと思います。

(1)それまで高価な印象があったPDF作成ソフトを安価で提供し、PDF普及のはずみをつけた。
(2)PDFを印刷業界から一般のビジネスマンにとっても身近なものにした。
(3)PDF作成ソフトの市場をアドビシステムズ独占状態から、サードパーティのものを含め乱戦状態に変えた。

最初の「いきなりPDF」に採用されたPDFプリンタ・ドライバは、スカイコム社が開発したものでした。実は当社も既にPDFプリンタ・ドライバを開発済みでしたが、それが売れるとは夢にも思っていなかったのです。振り返ってみれば、なんの変哲もないPDFプリンタ・ドライバが数十万本も売れるというのは、それだけPDFを作りたいがAcrobatは高いという、つまり需要と供給にギャップがあったということなのでしょう。そして、それに気が付いていなかったのです。

その後、アンテナハウスでは、ソースネクストから「いきなりPDF Professional」を出すことができました。現在(2005年末)では、「いきなりPDF2」も、スカイコム社のPDFプリンタ・ドライバからアンテナハウス製にリプレースしています。この結果、「いきなりPDF Professional2」と併せて両方が、アンテナハウスが開発したものになっています。

「いきなりPDF Professional」では、一括PDF作成と言って、ファイルをドラッグ&ドロップ操作でウィンドウに落とすだけでPDFを作成する機能もあります。このプログラム内部は次のようになっています:
①ファイルを作成したアプリケーションの種類を判別、
②例えば、Microsoft Wordのファイルなら、WordをCOMを使って、プログラム内で起動して、印刷動作をさせ、
③PDFの印刷ができたらWordは終了。

PDFを作るのはPDFプリンタ・ドライバを使っているのですが、印刷メニューからプリンタ・ドライバを選択する、という初心者に分かり難い操作なしで、あたかも自動的にPDFができるようになっています。「いきなりPDF Professional」は良く売れていますが、こういうエンドユーザ向けの使いやすい機能が人気を得たようです。この一連の仕事では、パソコンのユーザ層の裾野が広がっているので商品を作るときもユーザの目線を忘れないようにしないといけないんだな、と良い経験となりました。

そんなこともあって、ここ1年ほどの間、小売店のルートを通じて販売しているPDFのプリンタ・ドライバでは、アドビシステムズを抜いて、アンテナハウス製のPDFプリンタ・ドライバがトップのシェアを取っているんです。もっとも、今年(2005年)の4月からアドビシステムズもAcrobat 7.0 Elementsを税込み4,900円(アドビストア価格)で出し、対抗してきましたので低価格PDFプリンタ・ドライバの競争も激化しています。負けないように頑張っていきたいものです。

PostScriptプリンタ・ドライバとGDI型PDFプリンタ・ドライバの相違

PDFを作成するプリンタ・ドライバには、PostScriptを経由する方式とGDIからPDFを作り出す方式があると言いました。

やや専門的になりますが、この2種類のプリンタ・ドライバには次のような違いがあります。

①GDI型のプリンタ・ドライバはWindowsのGDIの機能に依存しているので、WindowsGDIの機能的制約を受ける。
②PostScriptプリンタ・ドライバは、WindowsGDIの機能制限を受けない。

この大きな違いの理由は、PostScriptプリンタ・ドライバは、Windowsのシステムの中で別格扱いされているということです。そして、アプリケーションは、GDIを経由しないで、PostScriptプリンタ・ドライバに対してデータを送り出すこともできるということです。

両者の方式では、MicrosoftWordなどでビジネス文書を作成している間は、大きな違いはでません。しかし、例えば、商業印刷などでプロ向けのグラフィックス・ソフトを使う場合には大きな差が出てきます。

例えば、テレビなどでカラーを表示するときは、RGB(Red,Blue,Green3原色)で表現することは多くの人が知っていると思います。WindowsのGDIも、テレビと同じように、カラーを全てRBGとして表現しています。そして、GDIを経由するPDFプリンタ・ドライバを使って作成したPDFの中ではカラーはRBGで表現されます。

しかし、印刷でのカラー表現はCMYK方式を使います。印刷用のアプリケーション・ソフトではカラーをCMYK方式で指定できるものもありますが、CMYK方式で表現したカラーは、WindowsGDIでは表示できません。このため、GDI型のプリンタ・ドライバで作成したPDFの中では、CMYKカラーを使えません。

また、アプリケーションによっては、PostScriptプリンタ・ドライバに出力するときと、GDI型のプリンタ・ドライバに出力するときで、内容を変えてしまうものがあることも分かっています:
例えば、MicrosoftのVisioは、PostScriptプリンタ・ドライバに対しては、ベクトル・グラフィックス形式でデータを出し、GDI型のプリンタ・ドライバに対しては、ラスター・イメージ形式でデータを出すようです。

なお、今日述べたことは、PDFを作成するプリンタ・ドライバとしての差異であって、PDF作成方法一般に該当することではありません。例えば、アプリケーションから、直接PDF作成ライブラリーを使って(つまりプリンタ・ドライバを経由しない)PDFを作れば、RGB以外のカラー表現方式を使うことも可能です。

また、Adobe PDFドライバはPostScriptプリンタ・ドライバですが、PostScriptプリンタ・ドライバかどうかを認識して、GDIを使わずに出力するのはアプリケーションの役割です。従って、Adobe PDFドライバをGDIのドライバとして認識してしまうアプリケーションにとっては、PDF出力に差がでません。

プリンタ・ドライバを使ってPDFに対話的機能を設定する

PDFの対話的機能

さて、実際のプリンタには接続しない仮想的なプリンタ・ドライバでPDFファイルを作成する、という方式には、次のような制限ができます。

ワープロソフトなどのアプリケーションの印刷機能は、プリンタを使って紙に印刷することを想定しています。このため、印刷機能を経由するだけでは、紙にはないけれども、PDFには用意されているいくつかの便利な機能を設定できないのです。

では、PDFにあって紙にない便利な機能とはなんでしょうか?主なものを簡単に紹介しましょう。

まず、しおり(BookMark)があります。文書のアウトラインをPDFファイルに設定しておきますと、Adobe Readerは、アウトラインを次の図のようにウィンドウに表示します。アウトラインの項目をクリックすると、その項目に設定されたリンク先にジャンプします。

BookMark.jpg

一般的には、文書の見出しを階層化してアウトラインを作ります。項目に設定するジャンプ先は、表示しているPDFファイル内でも外部でも構いません。書籍、操作説明書、仕様書などページ数の多いPDFファイルを作成する場合、しおりを設定することで、読み手が文書全体をナビゲーションし易くなります。

第二に、リンクがあります。PDFファイルの中にリンク先のアドレスを埋め込んでおき、ファイルをAdobe Readerなどで表示したとき、そのホットスポットをクリックすることで、埋め込まれたアドレスへジャンプするものです。使い方としては、目次から本文へのリンク、索引から本文へのリンク、本文内で別の箇所を参照、などが主なものです。PDFファイル内のみではなく、外部のPDFファイル(の特定の箇所)や外部のWebページへのリンクも設定できます。ユーザがホットスポットをクリックしたとき、その動作をするのはもちろんPDFビューアの役割です。

第三は、コメントです。PDFでは沢山の種類のコメント機能が使えます。PDF Referenceでは8.4 Annotationという項に定義されています。テキストで注釈を書く以外に、線、矩形、円、多角形、折れ線、ハイライト、アンダーライン、取り消し線、スタンプなどを使うことができます。本文とは別になっていて、既存のPDFファイルにコメントを追加したり、削除したりといった編集ができるように配慮されている訳です。Microsoft WordやExcelなどのOffice文書でも、本文と別にコメントをつけることができます。このコメントをPDFファイルを作成するとき、PDF内のコメントにできると便利でしょう。

第四に、アクセシビリティ機能があります。これは、また、別途、お話しましょう。

PDFには、これ以外にも、紙にはない、いろいろな機能がありますが、Officeソフトで作成するPDFファイルを想定すると、このあたりが主なものです。

PDFプリンタ・ドライバは、アプリケーションが紙に印刷するつもりでプリンタ・ドライバに対して出力したデータを取り込んでPDFファイルを作ります。このとき、しおり、リンク、注釈などは、データとして出力されないわけですから、PDFファイルに設定できません。何らかの工夫が必要になります。

PDF Maker

さて、Acrobat PDFでアドビシステムズのAcrobatには、PDFMakerというものがあるとお話しました。

このPDFMakerは、PDFの便利な機能の中で、紙にないためプリンタに印刷する操作では設定できない機能をどうやって設定するか、という課題についてのアドビシステムズの回答と思います。

PDFMakerで具体的にどうやっているか、内部までは詳しく知りません。しかし、OfficeソフトとPDFプリンタ・ドライバの間に介在して、Officeソフトに印刷動作させながら、同時にPDFファイルに設定したい情報を取り出して、PDFプリンタ・ドライバに渡しているのではないかと想像できます。

これにより、PDFMakerを使えば、Microsoft OfficeからPDFファイルを作るとき次のようなことができるようになっています。
・Aodbe PDFにしおりを追加
・(Word)見出しをしおりに変換
・(Word)スタイルをしおりに変換
・Adobe PDFにリンクを追加
・(Word)相互参照と目次をリンクに変換
・(Word)脚注と文末脚注のリンクを変換
・タグ付PDFでアクセシビリティと折り返しを有効にする
・表示されたコメントをPDFのノート注釈に変換

しかし、問題点としては、アプリケーション依存となってしまうことです。すなわち、AdobeのPDFMakerが使えるのは、現在、Microsoft Officeのみとなっていて、さらに、Acrobatのバージョンにより対応可能なOfficeのバージョンが違っています。

なお、アドビシステムズ以外のPDFプリンタ・ドライバのメーカも、PDFMakerとの対抗上、同じような解決策に基づくプログラムを製品に同梱しているケースが増えています。

【参考】
PDFMakerの対応するMicrosoft Officeのバージョン
PDFMaker の対応状況一覧

アンテナハウスPDF Driverのアドインボタン

アンテナハウス PDF Driver V3 では、Microsoft Word、Excel、PowerPoint用のアドインボタン機能を追加しています。アドインボタンを使用することで文書作成元のアプリケーションからボタンを押すだけでPDFファイルを作成できます。また、このアドインボタンを使用して PDF出力することで、変換元ファイルに含まれているリンクやしおり等が PDFファイルに反映されます。
アドインボタン
(Word 上のアドインボタン)

対応アプリケーション

アドインが対応しているアプリケーションは次のとおりです。

ご参考

アンテナハウスPDF Driver のアドインボタン機能の詳細について

直接PDF作成

Office12 のPDFサポート (1)

2007年初頭にはMicrosoftのOffice12が発売される予定です。既にその前宣伝が始まっていて、新しいOfficeはどんなものになるのだろう?と興味を掻き立てられます。

もう、いろいろなニュースで何回も流れているので知っている人も多いと思いますけれども、その中に、Microsoft Office12がPDFをサポートするという話題があります。

これは、Microsoftの上級副社長のSteven Sinofskyが、2005年10月2日にMVPの会議で明らかにしたもの。

Microsoft’s Steven Sinofsky Discusses Support for the PDF Format in Office “12”(英文)
スティーブン シノフスキーが語るOffice “12” における PDF 形式のサポートについて(和訳)

これを読むと、Microsoft Office Word, Microsoft Office PowerPoint, Microsoft Office Excel, Microsoft Office Access, Microsoft Office InfoPath, Microsoft Office Publisher, Microsoft Office Visioで、SaveAs(名前をつけて保存)で、PDFを出力できるようになる、と言っています。

これだけのアプリケーションに対してPDF出力をサポートするということは、PDF出力機能を何らかの共通の基盤の上に乗せているのだろうと思います。そうしますと、この共通基盤がどのようなものかが興味深いところです。

特徴は、
①PDFの仕様は1.4。少々古い
②他のプロダクティビティ製品でも PDFをサポート(他のプロダクティビティ製品って、なんだろう?)
③ハイパーリンクをサポート
④読み上げソフトでアクセス可能(タグ付きPDFか?)
⑤(DTPソフトでは)CMYKカラーモデルやトンボ出力をサポート

などとあります。特に、③、④、⑤あたりは、単にPDFプリンタ・ドライバでPDFを出力するだけではできません。従来は、11月21日に話しました、PDFMakerのような特別なプログラムで実現していたものです。

また、7種類にも上るアプリケーションに一斉にPDF保存機能を持たせるには、個別にライブラリーを組み込むのも工数が大きくなります。ですので、恐らくは、アプリケーションから独立した、共通基盤(レイヤ)を開発し、共通のレイヤを通してPDF作成ライブラリーを使っていると思います。

もちろん、各Officeアプリケーション固有の機能もありますので、きめ細かいPDF作成機能を個別に実装している部分もあると思います。内部がどうなっているか、知りたいものですが。

Office12 のPDFサポート (2)

Microsoftのブロガ達のOffice12のPDFサポートに関する発言を拾ってみました。

Brian Jonesさんは、Officeのファイル・フォーマットに関するエバンジェリストです。10月1日Office12のPDFサポート解禁で発言があり、多数のコメントがありました。これに対して、10月2日と4日に質問のいくつかに回答しています。

10月7日よりCyndy Wesslingさんが新しいブログを始めています。CyndyはOffice12のPDFサポートに直接携わった人でPDFに1年を費やしたとのこと。

ざっと、情報を拾ってみました。

Brian Jones: Office XML Formats

○10月1日 Native PDF support in Office 目新しい情報なし

○10月2日 # re: Native PDF support in Office "12" (コメントへの回答)
・出版(公開)シナリオのみで、PDFを読み込むことはしない。

○10月4日 Follow up on questions around PDF support in Office "12" (part 1 of many)
①タグ付きPDFをサポートは、InfoPath、Access、OneNoteを除き、text flow、 ALT textとUnicode textをサポートする。特別なセマンティックスなし。
②プリンタ・ドライバを使わずに直接PDFを書く。その理由は、内部リンク、外部リンクなどの対話性、透明やグラディエントの品質向上。
③Publish(出版)のみで、PDFビューアも読み込みもサポートしない。
④フォントの埋め込みはサポートするが、一般にはアウトライン化はサポートしない。

Cyndy Wessling: Save as PDF in Office "12"
□10月7日 Save as PDF in Office "12"
①PDFをネイティブに作成する(プリンタ・ドライバではない)
②設定は標準と最小サイズ設定の2種類。但し、Publisherは商業印刷設定ができる。
③内部ハイパーリンク、外部ハイパーリンクをPDFに保存
④タグとアクセシビリティは、読みの順序、画像と画像化したテキストの代替テキスト、非標準グリフのUnicode表現する。
⑤ブックマーク(しおり)を出力する。
⑥文書のメタデータを出力する。

概ね、予想の範囲ですが、ブログの発言へのコメントやMicrosoftの人間の発言を読むと、タグ付きPDFによるアクセシビリティへの配慮が大きな課題になっていることがわかります。

あとひとつ気になったこととして、Cindyのプロフィールに、Microsoftで8年働いていて、現在はプログラム・マネージャ。PDFに1年ほど携わったと書いてあります。そうすると、PDF出力機能を1年で作ったことになります。

果たして、ネイティブPDF作成ライブラリーをスクラッチで開発して1年でできるだろうか?PDFは仕様がオープンなので誰でもできるとは言っても、それなりの開発工数がかかりますからね。

例えば、Officeはタイ文字、アラビア文字、デバナガリ文字などをサポートしています。PDFでこういうものをサポートしようとするとWindowsがやっていることと同じことをPDF作成ライブラリーで独自にやらねばなりません。他にも、高度なPDFを作るにはやらねばならないことは山ほどあります。1年じゃ無理じゃないのかなあ。そうするとどうやって作ったんだろう?

OpenOfficeのPDF保存

さて、Microsoft OfficeのPDF保存機能について取り上げたからには、Open Office.org(以下、OpenOffice)のPDF保存機能についても取り上げておかないと片手落ちになってしまいます。

Open Officeは、ワープロソフト、表計算ソフト、プレゼンテーション・ソフトなどからなるOfficeスイートです。Microsoft Officeの置き換えを狙っていて、操作性もMicrosoft Officeにかなり近くなっています。また、Microsoft Word、Excel、PowerPointなどのファイルを高い互換性をもって読み込むことができます。

Open Officeは、オープンソース・ライセンスで提供されているのが特徴です。つまり、だれでもWebサイトからソースプログラムを含めてダウンロードできます。バイナリを自分で無料で使うほか、再配布することもできます。

Officeスイート製品を開発するのは、相当多額な投資が必要なはずです。では、なぜ、そのような多額の開発費を掛けたものを無償で提供できるかと言いますと、このプロジェクトは実際はSun Microsystemsが運営しているものだからです。Sunは、1999年夏、ドイツのStarDivisionというOfficeソフトを買収して、2000年6月にStarOffice5.2を出しました。

なお、StarOfficeは海外での商品名です。日本では、商標権の関係で、StarSuiteという名前を使っています。

その後、StarSuite6.0、StarSuite7.0とバージョン・アップを重ね、現在はStarSuite8.0を出しています。

OpenOfficeは、2005年10月からV2.0が正式リリースされていますが、これにSun独自の付加価値をつけたものがStarSuite8.0になります。

OpenOfficeは、SunのStarSuiteの普及促進策の一環と見て良いと思います。Sunの方は、無償であってもユーザ数が増えていくことで、Microsoft Officeのシェアを奪っていくことができると考えているのでしょう。

Microsoft Officeの独占によって、Officeスイート製品分野で競争がなくなり、その結果、停滞する可能性もあったのです。実際、Microsoft Officeは、Office97以降、大きな進歩はしていなかったと思います。しかし、Office2003でXML保存を取り入れ、今度のOffice12ではネイティブ・ファイル形式をXML形式にするなどのファイル形式のオープン化を推進、さらにOffice12でユーザ・インターフェイスの大幅な刷新などを行なって、OpenOfficeの追撃を必死で突き放そうとしているように見えます。
このように独占によるマイナスの側面をなくしただけでもOpenOfficeは大きな貢献をしているといえます。

この、OpenOfficeは、2003年にリリースしたOpenOffice.org 1.1からPDFのネイティブ保存を実現していました。Microsoft Office12のPDFネイティブ保存もOpenOfficeに刺激されるところが大きいでしょう。

InDesign, IllustratorのPDF作成

IllustratorやInDesignなども、プリンタ・ドライバを使わず、直接PDFを出力する機能をもっています。

これらは、さすがに、ご本家の製品だけあって、IllustratorもInDesignもPDF作成機能は充実しています。そこで、簡単にPDFを作ってみましょう。

Illustrator(CS2)でPDFを作成するのは、「印刷」メニューではなく、「別名で保存」または「複製を保存」を使います。また、InDesignでは「書き出し」メニューでファイルタイプを「Adobe PDF」に指定します。

それぞれでPDFを作ってみて、プロパティを見ますと、次の図のようになります。通常、AcrobatでPDFを作成しますと、PDFProducer(作成者)はDistillerになります。しかし、IllustratorとInDesignで作成したPDFファイルはいずれも作成者がAdobe PDF Libraryになっています。このことから、恐らく、これらのアプリケーションはプリンタ・ドライバ方式ではなくて、PDFを直接作成する方式を取っていると推測できます。

○Illustratorで作成したPDFのプロパティ
Illustrator.PNG

○InDesignで作成したPDFのプロパティ
InDesign.PNG

これは、IllustratorとInDesignでは、PDFを作成する時に、様々なPDFの機能をきめ細かく設定するためでしょう。

例えば、Illustratorでは、PDF作成時に、レイヤー化されたPDF、カラーマネジメントとPDF/X準拠のPDF作成、トンボと断ち落としの設定などができますが、これらはプリンタ・ドライバ経由でPDFファイルを作成する方法では難しいでしょう。

このようにPDFでは、ものすごく様々な機能を使うことができます。特に、高度な印刷用のPDFファイルを作ろうとしますと一般的なプリンタ・ドライバ方式では、それをPDFに設定することが難しくなります。

一般に商用印刷などに使うPDFを作るアプリケーションでは、①高度な機能をもつPDF作成ライブラリーを使い、②PDFを作成するアプリケーション側から、PDF作成ライブラリーをきめ細かく制御してPDFファイルを作成することが必要になります。

スキャナー・複合機によるPDF作成

スキャナーでPDF作成

PDFの作成方法 – 全体の仕組みに示した図ではパソコンのアプリケーションでPDFを作成する方法を整理しました。しかし、重要なPDF作成手段が抜けていました。それは、スキャナなどで作成した画像をPDF化する方法です。

紙に印刷された文書を電子化するには、紙をスキャナーで読み取り、その結果を電子ファイルにします。PDFが普及する前は、スキャナーで読み取った結果はTIFFなどの画像形式で保存していました。しかし、現在は、スキャナーで読み取った結果をTIFFではなくPDFで保存する方がむしろ主流になっているように見えます。

Acrobatではスキャナから取り込んだ画像をPDF変換できます。

また、スキャナーにはPDF保存機能があります。例えば、新世代スキャナが仕事を変える?ペーパーレス化はビジネスマンの夢を見ると、大抵のスキャナはPDF保存機能が備わっているようです。

また、スキャナから取り込んだデータを整理するサード・パーティのソフトウエア製品でもPDF保存機能を使えます。Part3. PDFにして紙文書をデジタル化

既にお話しましたようにPDFの起源はPostSriptです。そんなこともあり、私はスキャナの画像からPDFファイルを作るなんて邪道と思っていたのです。ところが、ブログで取り上げるために少し調べてみたところ、スキャナーでPDFを作る方法には、TIFFではできない様々なメリットがあります。

(1)PDFにすることで、無料配布のAdobeViewerdで誰でも内容を見ることができます。これに対してTIFFは様々な種類があり、あらゆる形式のTIFFを表示するのは困難です。この結果、TIFFの形式によっては表示できない可能性があります。
(2)PDF化することで検索可能にできます。最近は、画像の上に透明テキストを重ねる形式のPDFを作ることで、透明テキストを使ってPDFを検索できるようになっています。
(3)PDFで保存するとTIFFと比べてファイル形式を小さくできることになります。

PDFの起源からはスキャナーで読み取った結果をPDFにするという発想は出てきません。しかし、ブログを書いたお陰で、スキャナーで作成した画像からPDFを作成する方法についての自分の認識を改めることになりました。

【参考】
スキャナーの小咄: ファイル形式とデータ量について

Fax受信のPDF

画像系PDFのもうひとつの作成方式として、FAXで受信した内容をPDF保存する方式があります。PDFが普及する前は、FAXソフトはFAX受信内容をTIFFやJPEGなどで保存していましたが、最近のFAX受信ソフトには、受信データをPDFにする機能がついているものがあります。

例えば、メガソフトの「StarFax2005」は、受信データをPDF化して電子メールに転送できます。

また、インターコム社の「まいとーくFAX Server5」は、受信FAXのPDFエクスポート機能がついています。

ソフトだけではありません。インターネットFAXサービスでは受信したFAXをPDFにしてメールで受け取ることもできます。

インターファックス・サービス

F@xEm@ilサービス

アンテナハウスのアメリカ法人でも、FAX受信にはインターネットFAX(eFax.com)を利用しています。このサービスでは、お客様からアメリカ法人のFAX番号宛に送られた注文書をPDF化して、電子メールで届けてくれます。そのPDFファイルは日本に転送されてきて、出荷担当に回ります。このサービスは確かに便利なのですが、FAX原稿は手書きが多いため、判読困難で困ることもあります。そんな訳で、FAXの受信データをPDF化しても、そのメリットはビューアとしてAdobe Readerを使えるということぐらいで、それ以外には大きなメリットはないようにも感じています。

Faxの受信データは、PDFではなく他の画像形式でも良いのではないでしょうか?

ところで、インターコムは、2003年に「マイトーク7Pro」に業界初のPDF送受信機能をつけたと発表しています→同社のニュースリリース。しかし、「マイトーク8Pro」にはその機能が見当たりません。なぜなんでしょうね。

デジタル複合機

FAX、スキャナ、プリンタ、複写機を統合したデジタル複合機が増えています。複合機では、PDFの作成については、既に述べたスキャナーやFAX受信とほとんど同じといえるでしょう。

さらに、デジタル複合機は、コンピュータと同じようにOS(オペレーティング・システム)を搭載していて、いろいろなアプリケーションを連携して動作させることができるのが特徴です。

例えば、リコーのimagio Neoシリーズのニュース:
デジタル複合機だけで、さまざまなセキュリティ設定をしたPDFファイルを簡単に作成するimagio Neoシリーズ用アプリケーションソフト「imagio 暗号化PDF タイプA」を新発売

こういうビジネス用の高級機ならいろいろな機能があっても驚きませんが、ブラザーのデジタル複合機MyMio DCP-110Cなんて、Amazonで9,480円(税込み)なのに、 ドキュメント管理ソフトまでついていて、色々なフォーマットのファイルからPDFファイルを作成でき、複数枚の原稿を1つのPDFファイルにまとめることもできるようです。ちょっと驚きですね。

スキャナーで紙文書をスキャンしてPDFファイルを作成したり、FAXで受け取った文書をPDF保存したりするのは、単機能機でもできることは既に述べました。

さらに複合機になってコンピュータを搭載していれば、作成したPDFファイルを電子メールに添付して送信したり、OCRにかけて透明テキスト付きPDFにしたり、画像を圧縮したり、あるいは、PDFファイルに暗号を掛けるなど、アプリケーションを増やしていくことで機能の追加が可能になります。

既に紙になっている書類を電子化しようとしたら、一番手っ取り早いのはスキャナで読み取ることです。特に、e文書法の施行に伴い、従来紙で保存が義務付けられていた書類の電子保存が認められることになったということで、紙の書類を電子化する需要は拡大するものと思います。

こうしたことから、ビジネスから個人まで、しばらくは、デジタル複合機はうけに入りそうに思います。

ただ、問題は、このようなデジタル複合機で作成したファイルは基本的にはビットマップの画像データです。透明テキストをつけて検索可能にしたものも増えているとは言っても、このテキストは書式を持っているわけではないでしょう。

パソコンでOffice文書からPDFファイルを作成した場合、PDFの内部は命令の集合です。これに対して画像データをPDF化したものの実体は画像に過ぎません。表示した見かけは似ていても、中身はまったく違うものです。PDFファイルを再利用したり、検索したり、印刷したりという観点からは、相当に異なります。

なんでもPDFファイル化できるという柔軟さが混乱を招く結果にならなければ良いですが。

透明テキスト付きPDF

紙に印刷された書類をスキャンして、スキャナーが作成したイメージからPDFファイルを作成した場合、次の問題があります:もともと文字で表されている情報なのに、PDFファイルでは文字情報として扱えないことです。

すなわち、コンピュータで文字情報を取り扱うためには、文字をコード化されたデータとして扱わなければならないのに、スキャンした結果は画像だからです。この問題を解決するのが透明テキスト付きPDFです。

透明テキスト付PDFとは、スキャナーで読み取った画像をOCR機能をつかって文字を認識し、コード化した情報(テキスト)として、PDFの画像の上に透明属性を持たせて重ねたもの。PDFファイルの内容である文字情報を利用したいときは、テキストを取り出して利用できます。また、PDFファイルの中を検索してヒットした文字列の該当部分を反転表示することもできます。

透明テキスト付きPDFのアイデアは、恐らくOCR関係者が考えたものと思います。仕組みを聞いてみれば、特に驚くほどのことはないですが、こういうアイデアを初めて考え出した人は、なかなかすごいものですね。

一昔前のスキャナソフトは、OCRで文字認識した結果を、MicrosoftWord、Excelあるいは一太郎に変換できるのが売りだったと思います。いまのOCRソフトはすでにそのレベルは超えて、多くのものは、透明テキスト付きPDFまで作ることができるようです。

OCRソフトの一通りの紹介は、例えばこちら:
OCRソフトの紹介

ところでOCRで文字認識した結果を、もとの画像に重ねるというアイデアはすごいものですが、実は、完全には重ならないようです。

次の例を見てください。これは、透明テキスト付きPDFをAcrobat6で表示して、「消費電力」という文字列を検索したものです。検索対象は、透明な文字で、ヒットした文字列に相当する部分が白黒反転されています。地の「消費電力」という文字と検索でヒットした文字の位置(白黒反転されている範囲)がずれていますね。

AcrobatS.png

これはPDFを作る際に透明文字の位置がずれているためです。このように画像と文字がずれてしまうこともあることは知っていると良いと思います。

画像と認識した文字をぴったり重ねるのは技術的には可能と思います。可能であるからには、完全に重なるようなOCRソフトもあるかもしれません。おそらく、このあたりはOCRソフト次第なのでしょう。

いくつかの技術的課題

PostScriptにない機能は

ところでPDFはPostScriptにはない、データの交換・共有機能をもたせるために発明されたと話しました。このため、PDFは、しおり、注釈、ハイパーリンクなどPostScriptにはない機能をもっています。

PostScriptファイルからPDFを作成する場合は、当然のことながら、PostScriptファイルの中に存在しない情報は、PDFに入れることができないわけです。これを考えますと、PostScriptを経由してPDFを作る方法についてはひとつ疑問がわきます。

つまり、「PDFを作るのに、古いPostScriptに依存するやり方で十分なのだろうか?」、「PostScriptが持っていなくて、PDFで必要とする情報はどうやって受け渡しているのだろうか?」という疑問です。

そのためには、原理的に、次のようなことが必要になるはずです。

  1. PostScriptファイルに、PostScriptの印刷処理では不要だけれども、PDF作成では使う情報を持たせる仕組みが必要
  2. 前段でPostScriptファイルを準備するとき、予めPDFを作ることを意識してそういう情報を出力する
  3. PostScriptからPDFへの変換プログラムは、PDFを作成するとき、そういうPDF専用の命令をも解読して、PDFに出せる必要がある

これについては、「PDFMark」という、しおり、注釈、ハイパーリンクなどPDF独自の機能をPostScript ファイル内に記述する仕組みが用意されています。しかし、アプリケーションからPDFを作成するときに、この仕組みを実際に使えるかどうか、となるとまた話は別になります。仕組みは仕様として用意されていても、プログラムがそれを使えるように作られていないと、普通のユーザは実際には使えないからです。

PDFMarkに関する仕様:
pdfmark Reference Manual (PDF: 985k)

EPS(Encapsulated PostScript)

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部分からプレビュー・イメージを作り出さねばなりません。EPSの中のPostScript命令を解読してページをレンダリングするにはPostScript(または互換)インタープリタが必須となります。

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

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

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の存在理由はなくなった。この機能は将来のバージョンで削除されることになるだろう、とあります。


Copyright © 1996-2013 Antenna House, Inc. All right reserved.
Antenna House is a trademark of Antenna House, Inc.