こけめも

メモみたいなもの

手持ちのPDFをWebに最適化する方法 -リニアライズドPDFをご家庭で-

最近職場で「リニアライズドPDF」という言葉を聞くことがあります。
ちょっと興味を持って調べてみたので、分かったことだけでもまとめておきます。




リニアライズPDFとは

アンテナハウス株式会社様の解説が分かりやすいです。PDF関連の調べ物ではいつもお世話になっています。
Web表示用に最適化PDF(リニアライズドPDF)の意味、用途、効果
PDF 千夜一夜: リニアライズドPDFとは

ポイントを書き出してみると

  • 普通のPDFと異なり、ファイルを最後まで読み込まなくても表示開始できる。(ページ番号指定してPDF開く場合にも有利)
  • 文書のプロパティの「Web表示用に最適化」が"はい"になる。

というとこでしょうか。携帯電話向けのPDFでも活用できるようです。

このリニアライズドPDFはGhostscriptを用いることにより無料で作成出来るようなので、その手順を紹介します。


1.Ghostscriptのインストール

以下のページを参考にWindows用のGhostscriptを導入します。
Ghostscript and GSView


ここは素直に手順に従い導入。

  1. 圧縮ファイル解凍
  2. c:\gsにインストール
  3. c:\gs\gs8.63\bin と c:\gs\gs8.63\libを環境変数Pathに設定


なお、ログイン名に日本語が含まれるとインストール失敗するため、英数字(ASCII?)のみのユーザー(管理者権限)でログインしなおすか、「setupgs.exeを右クリック⇒別のユーザーとして実行」を行いましょう。


2.PDF最適化

コマンドプロンプトを起動し、以下のコマンドを入力します。

 最適化
 pdfopt "変換前PDFパス" "変換後PDFパス"
 例) pdfopt c:\Normal.pdf c:\linearized.pdf

以上。
で終わりでは味気ないので、実験してみます。
リンクをクリックしてから表示開始されるまでの時間を調べてみました。ストップウォッチによる測定なので誤差はご了承ください。
(こういうのを上手く測る方法ってあるのでしょうか?)

 通常PDF(クセロPDFで作成、テキスト・写真混載word原稿)
 http://www12.atpages.jp/~kokemono/pdf/sample200page.pdf
 (1,002,009バイト)
 ⇒ 2.88秒(4回平均)
 リニアライズドPDF(上記PDFを最適化)
 http://www12.atpages.jp/~kokemono/pdf/linearized.pdf
 (1,002,422 バイト)
 ⇒ 1.54秒(4回平均)

一応マイPCで体感できるくらいには表示時間に差がありますね。
ハイスペック・高速回線の方だと差を感じないかも。

ページ番号指定

PDFのパスに #page=xx をつけることにより、最初に開くページを指定出来ます。ちなみに上記2つのPDFで90ページ目を指定する場合以下のようになります。

 通常PDF
 http://www12.atpages.jp/~kokemono/pdf/sample200page.pdf#page=90
 リニアライズドPDF
 http://www12.atpages.jp/~kokemono/pdf/linearized.pdf#page=90


通常PDFでは全てダウンロードしてから指定ページ表示します。
リニアライズドPDFではウェブ上でバイト単位の取得要求に対応できるように(サーバから1ページ単位でダウンロードできるように)PDFファイルの内部構造を変更しているため、指定ページからダウンロードするようです。
つまり何が言いたいかというと…表示までの時間は上記と変わりません。


※注意:日本語フォントを含むPDFに対応しているかは未検証。