PDFのファイルサイズ
用途によって変わるPDFのファイルサイズ
DTPの出力用データとしてだけでなく、インターネットでの文書配信用など幅広く使われるPDFですが、用途によって考慮しなければならないのがファイルのサイズです。
たとえば、高解像度出力用のPDFであれば普通はサイズの制約などないため、1ファイルで数十~数百MB、場合によっては1GB以上のファイルサイズになってもかまわないかもしれません。しかし、インターネットで配信する場合にはせいぜい10~20MB程度に抑えるのが無難でしょう。まして、電子メールで送信するとなると、送付先のメールサーバの制限も考慮して数MBまでにとどめておかないと相手に届かないことだってあります(ちなみにメールの場合、送信されるファイルサイズはエンコーディングによってディスク上のサイズよりも増える)。
もちろん、DTPで使う場合でも、不必要に巨大なファイルになってしまうと出力に時間がかかるなど問題が生じるので、適切なファイルサイズを心がけることは大切です。
そこで今回は、PDFのファイルサイズをコントロールするための方法について見ていきましょう。
画像の圧縮とダウンサンプル
まず、実際のPDFデータでどういった要素がどれくらいの容量を占めているのかを把握します。Acrobatで「PDFを最適化」-「高度な最適化」を実行し、ダイアログ右上の「容量の調査」をクリックすると、PDF内部の要素ごとの容量がバイト数とパーセントの一覧で表示されます。PDFのデータサイズを大きく減らしたい場合は、PDF内部で大きなウエイトを占める要素を調整するというのが基本です。
なお、Acrobatには、PDFのサイズを調整するための機能がいくつか用意されていますが、サイズを思ったようにコントロールしたいのであれば、使い勝手がよく自由度の高い「高度な最適化」を使うのがいいでしょう。
一般的に、PDFのファイルサイズを大きく左右する要素なのは画像です。たとえば、1つのPDFファイル中に10cm四方の画像が10個あるとします。この画像が全て圧縮されていない解像度300ppiの8bitカラー画像だった場合、仮に他のオブジェクトがなかったとしてもこのPDFのファイルサイズは数十MBになるはずです。
この画像を調整することで、データ量を元データの数十分の一や数百分の一といったように大幅に縮小することが可能になります。画像におけるデータサイズの調整方法としては、圧縮、解像度の変更、減色などがありますが、PDFの場合、基本的には圧縮とダウンサンプルを使います。
PDFでサポートされている圧縮方法はJPEG、ZIPおよびJPEG2000の3種類。JPEG圧縮はデジタルカメラの撮影画像など階調のある画像を圧縮するのに適した方法であり、圧縮率を高くすれば元データの数%くらいに圧縮することも可能です。
また、ZIP圧縮はデータの劣化なしに圧縮できるのが最大のメリットです。白地やベタなど均一濃度の部分が広い場合に比較的高い圧縮が掛かります。
もちろん、JPEG圧縮にしろZIP圧縮にしろ実際の圧縮率は画像の絵柄に依存するため、思ったほどサイズが小さくならないこともあり得ます。
JPEG 2000はJPEG委員会が2000年に公開した新たな圧縮画像フォーマットで、Acrobat 6.0(PDF 1.5)以降でサポートされています。Acrobat上での圧縮率はJPEGと同様5段階用意されていますが、JPEGと違い「劣化なし」つまり可逆圧縮の設定も選べます。非可逆圧縮もJPEGと同程度の品質であればJPEGより高圧縮になるということなので試す価値はあります。なお、Acrobat 5.0(PDF 1.4)形式までのPDFだと、JPEG 2000をサポートしていないため選べなくなります。
ちなみに、JPEG 2000は鳴り物入りで作られたにもかかわらず普及がなかなか進まず、Webなどでの一般用途で使うのは難しい状況ですが、PDFの内部で使う画像フォーマットであれば問題ありません。
また、解像度を変更するのもデータ量の削減に有効です。印刷用データで一般的な350ppiの画像を、画面表示用の72ppi程度の解像度にすれば、画像のデータ量はそれだけで20分の1以下になります。
もっとも、解像度を落とせばそれだけ画質が悪くなるのは必然であり、そのあたりはファイルサイズと画質のどちらをどれだけ重視するかによって調整するしかありません。
ベクターデータ量の落とし方
さて、印刷用PDFを元にWeb配信用PDFを作るといった場合、画像は圧縮やダウンサンプルによってデータ量が大きく変わるので比較的調整しやすい(クライアントの理解も得やすい)のですが、意外にネックとなるのがフォントや線画などのベクターデータです。
ベクターデータは、基本的に座標と関数によって線を描画します。そのため、1ピクセルごとにデータが必要なビットマップ画像と違って大きなオブジェクトでもデータ量が増えることなく比較的小さなファイルサイズが可能というのが特徴です。
同じベクターデータでも、フォントの場合は、埋め込みしないことでデータ量を下げることが可能です。もちろん、埋め込まないと環境によってレイアウトが変わってしまいますが、デザインを考えなければそれも許容できるケースはあるでしょう。
しかし、純粋な図形のベクターデータは埋め込まないという選択肢がなく、そのままではデータ量を調整することができません。ちなみに、PDFのバージョンが高いほどベクターデータのデータ量も小さくなりますが、それも限度があります。
エクターデータが座標と関数を使うことで軽いデータでオブジェクトを生成できるとしても、それがたくさん集まってくるとばかになりません。Illustratorで作ったオブジェクトの場合、アンカーポイントの数が増えれば増えるほどデータ量も増大していきます。
また、ちょっと見ただけだとそれほど複雑なレイアウトでないように思えても、実際にはたくさんのオブジェクトが重なっているという場合もあります。他のオブジェクトの下に隠れて見えないオブジェクトであっても、そのデータはそのままま全体のデータ量に加算されます。
マスターページに置いたオブジェクトがそういった複雑な作り方をしていた場合、それが全ページに配置されることでデータ量は思った以上に増大することもあります。
しかも、PDFを作る際に圧縮やダウンサンプルをどのように指定しても、ベクターデータのデータ量は変わりません。Web配信用のPDFを作るために画像の解像度をギリギリまで下げ、最大限に圧縮しているのに、ベクターデータがあるためにどうしても思ったように下がらないというケースは意外に多いのです。
ベクターデータがふんだんに使われているPDFで、データ量が思ったほど下がらない場合、ベクターデータをラスターデータに変換するという方法も試していいかもしれません。たとえばPDFをAcrobatでTIFFに書き出したり、Illustratorで開いてオブジェクトをラスタライズするのです。
ラスタライズすることで、他のオブジェクトの下に隠れていたオブジェクトがなくなり、入り組んだアンカーポイントなども全て単なるピクセルになります。ラスターデータのほうがサイズが大きくなるように思うかもしれませんが、圧縮率を高くできるような絵柄であれば、ラスタライズで大幅なサイズダウンが可能になることもあります。
もちろん、ラスターデータにすると文字や線の切れは(解像度が低くなればなるほど)悪くなり、品質が劣化するのは避けられないため、求められるレベルを維持できないようではこの方法は採用できません。
また、PDF内のベクターデータには、PDFの表示に必要なもの以外のデータが含まれていることがあります。たとえば、個々のプレビュー画像データやアプリケーションだけで使う固有のデータなどです。これらはアプリケーションで編集する際には必要かもしれませんが、PDFの表示だけであれば不要です。
たとえばIllustratorで作ったベクターデータをPDFに保存した場合、PDFのファイル内にIllustratorで編集するためのデータが含まれます。そういった作成アプリケーションのデータがPDFに取り込まれているケースでは、PDFの表示・印刷に不要なデータを削除することで、ファイルサイズをかなり圧縮できる場合があります。具体的には、「PDFを最適化」-「高度な最適化」で「ユーザーデータを破棄」にある項目全部にチェックを入れます。
なお、「PDFを最適化」-「オブジェクトを破棄」で、PDFに含まれているサムネイル画像や文書タグなどを削除する設定が用意されています。データによってはここの設定もファイルサイズの削減に効いてきます。
ファイルサイズを考えたデータ作り
ベクターデータをラスタライズするといった方法は、手間や品質を考えるとあまり積極的にお勧めはできません。むしろ、PDFを多目的に展開したい場合は、データを作る段階からファイルサイズを考慮して作業することのほうがはるかに有効です。
たとえば、他のオブジェクトに隠れて見えないオブジェクトはデータの無駄に他なりません。できるだけ無駄な部分を作らないような工夫も必要でしょう。たくさんのオブジェクトを組み合わせて1つのパーツを作るような場合、できればオブジェクトを1つに合成したほうがデータは軽くなります。複数ページで使われる共通パーツなどは特にファイルサイズに与える影響が大きいので注意するべきです。
画像データをIllustratorに取り込んでベクター化した際、設定によっては膨大なアンカーポイントが作られます。こういったデータもアンカーポイントを減らしたり、複雑なものはベクター化せず画像のままPDF化するなども場合によっては効果があります。
また、ファイルサイズを考えると、使うフォントはできるだけ少なくするというのも必要でしょう。
昔と比べてDTPの環境が充実し、出力も高速になってきたため、ともすれば作られるデータが重くなる傾向があるように思います。しかし、WebでのPDF配信はもちろん、高解像度出力する場合でもデータが軽いに越したことはありません。シンプルなデータ作りということをもう一度見直してみることも必要なのではないでしょうか。
(田村 2007.10.15初出)
(田村 2023.6.20更新)