ウェブ開発者向け — 高速インラインPDF表示
PDF.jsやブラウザネイティブビューアを介してウェブページに埋め込まれたPDFは、線形化することで読み込み速度が劇的に向上します。ファイル全体がダウンロードされる前に最初のページが表示されるため、ユーザーは読み込みインジケーターをじっと見つめる必要がなくなり、ページへのアクセスを維持できます。
最適化ツールと称するほとんどのPDFツールは、実際には単なる画像圧縮ツールです。JPEG画像を低品質で再エンコードし、ファイルサイズが小さくなったと報告して、処理完了とします。この方法は確かに機能しますが、多くのPDFを悩ませている構造的な肥大化を見落としています。すべてのスライドに同じ200KBのロゴを埋め込んだスライドデッキでは、その画像が40個の別々のオブジェクトとして40回も保存されます。各コピーをを圧縮するよりも、画像を1回だけ保存して40回参照する方が、相対的に節約効果は小さくなります。これが重複排除であり、ほとんどの「最適化」ツールはこれを行っていません。
線形化は、見落とされがちなもう一つのテクニックです。線形化されていないPDFは、ページが作成または編集された順序で保存されるため、閲覧者はファイル全体をダウンロードしてからでないと表示できません。線形化ではバイト配列が再編成され、ページ1のデータがファイルの先頭に配置されます。その違いは明らかです。線形化された20MBのカタログは、低速な接続環境でも1秒以内に最初のページを表示しますが、線形化されていない同じファイルでは数秒間何も表示されません。ウェブサイト、メール、またはCDN経由で配信されるPDFの場合、線形化は最も効果的な構造変更と言えるでしょう。
構造最適化は、圧縮とは異なる問題を解決します。ここでは、線形化、重複排除、フォントサブセット化が最も顕著な効果を発揮する6つのユースケースを紹介します。
PDF.jsやブラウザネイティブビューアを介してウェブページに埋め込まれたPDFは、線形化することで読み込み速度が劇的に向上します。ファイル全体がダウンロードされる前に最初のページが表示されるため、ユーザーは読み込みインジケーターをじっと見つめる必要がなくなり、ページへのアクセスを維持できます。
Gmailでは添付ファイルのサイズ制限が25MBですが、多くの企業メールサーバーはさらに厳しい制限を設けています。ロゴ画像が繰り返し挿入されたブランドレポートは、重複排除を行うだけで大幅にサイズが縮小され、受信者には画質の変化が全く感じられないことがよくあります。
四半期報告書、役員会資料、顧客提案書には、通常、文書に必要なサイズをはるかに超えるブランド素材や埋め込みフォントが繰り返し使用されています。最適化によって、読者の目に触れる単語やピクセルを一切変更することなく、これらの要素を削減できます。
ダウンロードリンクや埋め込みビューアを介して配信されるデジタル出版物(電子書籍、カタログ、ルックブックなど)は、直線的な表示形式にすることで読者に素早く届き、よりレスポンスの良い体験を提供します。最初の章だけを表示し、残りの章をダウンロードさせることで、離脱率と読了率を左右する大きな違いが生まれます。
線形化された小型のPDFファイルは、特に携帯電話回線接続時において、モバイルデバイスでの開き方が著しく速くなります。フォントのサブセット化と重複排除を組み合わせることで、ファイルサイズを大幅に削減し、モバイルブラウザ上でPDFファイルの開き方が「遅い」状態から「すぐに開く」状態へと改善できる場合がよくあります。
文書アーカイブには、何度も編集されたPDFファイルが蓄積され、編集のたびに孤立したオブジェクトや重複したリソースが残されます。最適化によってこうした蓄積された負債が解消され、保存、バックアップ、システム間での移行が容易な、クリーンでコンパクトなファイルが生成されます。
サーバーを介さずにブラウザ上で構造最適化を行うには、容易ではないエンジニアリング上の問題を解決する必要があります。その取り組みがあなたにとってどのような意味を持つのか、以下に説明します。
線形化: LuraPDF は pdf-lib を使用して、ファイルの先頭に最初のページのオブジェクトを配置し、その後にプログレッシブ ダウンロード リーダーにコンテンツの残りの部分へのマップを提供する線形化辞書を配置した新しい PDF バイト ストリームを書き込みます。これは PDF の内容を変更するものではなく、ディスク上のバイトの配置順序を変更することで、完全なダウンロードが完了する前に部分的なレンダリングを可能にします。重複排除: エンジンは、埋め込まれたすべての画像 XObject のコンテンツ ハッシュを計算します。ハッシュが一致するオブジェクトは統合され、最初のインスタンスが保持され、ページ コンテンツ ストリーム内の後続のすべての参照が同じ共有オブジェクトを指すように書き換えられます。節約できる容量は、特定の画像が個別に埋め込まれた回数に比例します。
フォントのサブセット化: LuraPDF は、埋め込まれたフォントごとに、ドキュメントのテキスト ストリームで実際に参照されている Unicode コード ポイントを分析します。次に、フォントのグリフ テーブルを再構築して、それらのコード ポイントのみを含むようにし、残りの文字セットを破棄します。数百個のグリフしか使用しないドキュメントに数千個のグリフを埋め込んでいる CJK (中国語、日本語、韓国語) フォントの場合、サイズ削減は劇的です。未使用オブジェクトの削除: 重複排除とサブセット化の後、エンジンは PDF の相互参照テーブルを走査し、ドキュメント カタログからアクセス可能なすべてのオブジェクトをマークします。アクセスできないオブジェクト (削除されたページ、削除されたフォーム フィールド、古いリビジョン スナップショット) は、新しいファイルの xref から除外され、出力から効果的に削除されます。
| 特徴 | LuraPDF | Smallpdf / Sejda | Adobe Acrobat |
|---|---|---|---|
| 線形化(高速ウェブビュー) | はい、完全な線形化です。 | 部分的 — 一部のツールのみ | はい |
| 画像オブジェクトの重複排除 | はい | めったに含まれない | はい |
| フォントサブセッティング | はい | めったに含まれない | はい |
| ブラウザ上でファイルを処理します(アップロードは行いません)。 | はい、完全に地元産です | いいえ - サーバーへのアップロードが必要です | はい、インストール済みのソフトウェアです。 |
最適化は、どの手法がどの問題に対応しているかを理解している場合に最も効果を発揮します。最適な結果を得るには、ファイルの種類に合わせて適切な手法を選択してください。
ウェブサイト上またはメールリンク経由でPDFを配信する場合は、線形化してください。ウェブホスト型ドキュメントの場合、最初のページのレンダリング速度がユーザーにとって最も分かりやすいメリットです。
スライドデッキやブランド付きレポートには、まず重複排除を実行してください。これらのファイルには、重複排除によって品質を損なうことなく削除できるロゴや背景画像がほぼ必ず含まれています。
PDFを外部に配布する際は、フォントのサブセット化を有効にしてください。特に、文字セットの大きいデザインフォントを使用したドキュメントや、InDesignまたはIllustratorで作成されたドキュメントには有効です。
サイズを最大限に削減するには、最適化とPDF圧縮を組み合わせましょう。最適化ではまず構造的な肥大化を取り除き、次に圧縮で画像を低品質で再エンコードしてさらにサイズを削減します。
PDFが共有テンプレートの場合は、最適化されていないバックアップを必ず作成してください。サブセット化によって未使用のグリフが削除されるため、後でそれらの文字に新しいテキストを追加するには、フォント全体を再埋め込みする必要があります。
最適化されたPDFを対象のビューアでテストしてください。線形化されたPDFは標準ですが、一部の企業向け文書管理システムには独自のPDF処理上の癖があり、確認しておく価値があります。
PDFファイルをドラッグ&ドロップして、ブラウザ上で3つの構造最適化手法をすべて実行してください。ウェブサイトの読み込み速度が向上し、メール添付ファイルのサイズが小さくなり、ファイルもよりクリーンになります。アップロードもアカウント登録もウォーターマークも不要です。