PDF は即座に開き、画面上にすべてのページが完璧に表示されますが、物理プリンターに送信すると文字化け、文字の欠落、記号の重なり、または完全な空白領域のページが生成される場合、画面レンダリング パイプラインと印刷レンダリング パイプラインの間でフォント レンダリングの不一致が発生します。全体としての文書構造はそのままです。コンテンツ ストリームは有効で、解析可能です。画面上のビューアは、すべてのグリフを正確に見つけて描画できます。ただし、同じテキストを忠実にレンダリングするためにプリンタが必要とする情報は、ファイルに存在しないか、存在しても内部的に矛盾しているか、プリンタのフォント処理サブシステムと互換性がないかのいずれかです。特定のフォント埋め込みレイヤーとフォント記述子レイヤーに対処する、ターゲットを絞った Repair PDF アプローチは、多くの場合、元のソース ファイルからドキュメントを再構築することなく、この症状の最も一般的な原因を確実に解決します。
画面上の編集およびレビューのプロセス全体ではドキュメントがまったく問題なく表示されるため、この問題はイライラさせられます。作成者は正しいテキストを見て、ファイルを配布する準備ができていると想定します。印刷出力が判読できないことに気づくのは、受信者、または会議や提出用にハードコピーを印刷する直前の作成者だけです。画面と印刷の不一致はランダムではありません。これは、PDF 形式でのフォント データの処理方法に根ざした予測可能な一連の原因に従い、それぞれの原因に対応する修正があります。

PDF は画面上では正しく表示されるのに、印刷すると失敗する理由
PDF コンシューマ アプリケーション内の画面レンダリング エンジンと印刷レンダリング エンジンは、2 つの異なるフォント解像度パスを使用します。スクリーン レンダラーは、元の埋め込みフォントが破損しているか、欠落しているか、部分的にのみ埋め込まれている場合に、代替システム フォントに正常にフォールバックできます。グリフの形状と文字幅を十分に近づけることができるため、低解像度から中解像度のディスプレイでもテキストが許容できるように表示されます。プリンタ、特にページ記述言語をネイティブに解釈する PostScript プリンタには、完全なグリフ データとフォント記述子メトリクスを備えた元の完全に埋め込まれたフォント サブセット、または厳密なシステム フォント マッチに加えて、文字幅配列、フォント境界ボックス、キャップ高さ、ステム幅、およびカーニング ペアを含む正確に定義されたフォント記述子テーブルが必要です。
PDF 仕様では、フォントを処理するための 3 つの異なる戦略が定義されています (Adobe、「PDF Reference 1.7」、2006)。完全に埋め込まれたフォントには、PDF ファイル内のフォント プログラム バイナリ全体が含まれます。サブセット埋め込みフォントには、Unicode コード ポイントで識別される、ドキュメント内で実際に使用される特定の文字のみが含まれます。参照されるフォントにはフォント データがまったく含まれません。標準システム フォントに BaseFont 名を付け、表示または印刷時に一致するフォントを提供するかどうかはビューアまたはプリンタに依存します。プリンタにインストールされているフォント コレクションは、ほとんどの場合、少なくともいくつかの書体においてビューアのフォント コレクションと異なるため、参照フォントは、画面テキストと印刷テキストの不一致の最も一般的な原因です。
PDFを修復してみる
インストールは必要ありません。ブラウザで直接動作します。
どのフォントが埋め込まれているか、どのフォントが単に参照されているかを確認する
最初の診断手順は、ドキュメントで使用されている各フォントの埋め込みステータスをレポートできるビューアで PDF を開くことです。 Adobe Acrobat Reader または Acrobat Pro で、「ファイル」、「プロパティ」に移動し、「フォント」タブをクリックします。このタブには、ドキュメント内の任意の場所に表示されるすべてのフォントがリストされます。各フォント名の横に、埋め込みステータスが表示されます。 「埋め込み」ステータスでリストされているフォントは、完全なグリフ プログラムが PDF 内に保存されています。 「埋め込みサブセット」これは、ドキュメント テキストで使用されている特定の文字のみが存在することを意味します。これは通常のことであり、ほとんどのドキュメントでは十分です。埋め込みインジケーターなしでリストされたフォント。フォント名と「Type 1」などのタイプのみが表示されます。または「TrueType」は、データがまったく埋め込まれていない参照フォントです。
[フォント] タブに 1 つ以上の参照フォントが表示される場合、それらのフォントが印刷文字化けの主な原因となります。 Fix PDF またはプリフライト ツールを使用すると、一致するシステム フォントを見つけ、文書内で使用されている文字のみに必要なグリフ形状を抽出し、それらのグリフを新しいフォント サブセットとして PDF 内に埋め込むことができ、印刷の問題を解決できます。埋め込まれたサブセットは、プリンターに必要なすべてのグリフを提供し、プリンター自体のフォント コレクションへの依存を排除します。
ドキュメントを画像として印刷してすべてのフォント処理をバイパスする
フォント データが本当に欠落しているか破損しており、埋め込みも修復も直ちに実行できない場合、PDF を一連のラスター イメージとして印刷すると、プリンターのフォント サブシステムが完全にバイパスされます。 Adobe Acrobat Reader の [印刷] ダイアログで、[詳細設定] ボタンをクリックし、[画像として印刷] オプションにチェックを入れます。この設定は、Acrobat に各ページを内部で高解像度ビットマップにレンダリングし、元のベクター描画コマンドやテキスト配置演算子を送信する代わりに、ビットマップ データのみをプリンターに送信するように指示します。印刷出力は完全に判読できますが、脚注、軸ラベル、細かい文字などの小さなポイント サイズのテキストは、ラスター化ステップにより文字の端がわずかに柔らかくなる場合があります。
以下の表は、さまざまなイメージとして印刷の解像度設定のトレードオフをまとめたものです。
| 解像度設定 | 出力テキスト品質 | 1 ページあたりのおおよそのスプール サイズ | 最適な用途 |
|---|---|---|---|
| 300DPI | 全体的に良好、8 ポイント以下のセリフにわずかな軟化が見られる | レターページあたり約 8 MB | 標準的なオフィス文書、内部報告書、草案 |
| 600DPI | 優れており、本物のベクター テキストとほとんど区別がつきません | レターページあたり約 30 MB | 契約書、法的書類、脚注または小さなテキストを含む文書 |
| 1200 DPI | 元のベクトル出力と区別できない | レターページあたり約 120 MB | プロ仕様の印刷校正刷り、アーカイブ品質の保存コピー |
PDF を永続的にラスタライズされたフォントを含むフラット化バージョンに変換します
どのプリンタ、どのオペレーティング システム、どの PDF ビューアでも同様に印刷できる自己完結型のドキュメントを作成する永続的な修正を行うには、PDF 全体を、すべてのテキストが高解像度でラスタライズされたバージョンに変換します。これにより、すべてのページが高解像度画像として保存され、出力にはいかなる種類のフォント依存関係も残らない新しい PDF ファイルが生成されます。その代償として、テキストは検索および選択できなくなり、元のベクトルベースのドキュメントに比べてファイル サイズが増加します。
無料のコマンドライン PDF プロセッサである Ghostscript は、この変換を効率的に実行します。コマンド `gs -o Output.pdf -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dEmbedAllFonts=true -dSubsetFonts=true input.pdf` は、300 DPI の画質を維持しながらテキストをラスタライズするプリンター プリセットを使用します。より高い忠実度を実現するために、プリプレス プリセットはカラーおよびグレースケール イメージに対して 300 DPI を維持し、フォント データが有効な場合はテキストをベクトル データとして残します。フォント データが破損していることがわかっている場合は、Ghostscript コマンドにフラグ `-dNoOutputFonts` を追加して、フォントの有効性に関係なく完全なテキスト ラスタライズを強制します。
PDF プリフライト ツールを使用して破損したフォント テーブルを修復する
フォントの内部メトリック テーブルが欠落しているのではなく破損している場合、プリフライト修復ツールを使用すると、テキストをラスタライズせずにテーブルを修復できます。フォント プログラムには、いくつかの内部データ テーブルが含まれています。 「cmap」表は、Unicode 文字コードをフォント内のグリフ インデックスにマップします。 cmap テーブルが破損すると、プリンタは特定の文字コードに対して間違ったグリフ形状を選択して描画し、一見ランダムに文字化けしたように見えます。 「hmtx」テーブルには、各グリフの前進幅を含む水平方向のメトリクスが格納されます。 hmtx テーブルが破損すると、文字が重なり合ったり、衝突したり、不規則な間隔で配置されたりします。プリフライト ツールは、両方のテーブルの破損を検出し、埋め込みフォント データの有効な部分からテーブルを再構築するか、一致するシステム フォントを置き換えて、その置き換えからクリーンなテーブルを再生成できます。
Adobe Acrobat Pro の「PDF フィックスアップ」にあるプロフェッショナルなプリフライト モジュールcategory と callas pdfToolbox では、ワンクリックでフォント テーブルの修復操作を行うことができます。 WukongPDF の Repair PDF ツールには、埋め込みの欠落、cmap の破損、hmtx の不一致を単一の分析パスで検出する自動フォント診断が含まれています。ブラウザベースの修復サービスには、標準の自動修復パイプラインの一部としてフォント サブセットの再構築が含まれることが増えており、デスクトップ ソフトウェアやコマンド ラインの専門知識がなくてもフォント テーブルの修復にアクセスできるようになりました。
複数の種類のプリンターとドライバーで修復された出力をテストする
標準の PCL ドライバーを使用する家庭用インクジェット プリンターでは PDF が正しく印刷されても、PostScript ドライバーを使用するオフィスのレーザー プリンターや、独自のラスター イメージ プロセッサを使用するプロダクション デジタル印刷機では、文字化けが発生する可能性があります。プリンタの種類が異なれば、非標準またはわずかに形式が不正なフォント テーブルに対する異なる許容レベルでフォント データが解釈されます。 PostScript プリンタは、PCL プリンタよりもフォントの適合性について厳密である傾向があり、PCL ドライバが代わりに黙って受け入れるフォントを拒否したり、誤ってレンダリングしたりします。
修復が完了したら、ドキュメントが発生する可能性のある各プリンタの種類で 1 つのテスト ページを印刷します。受信者が自分のオフィスや家庭用プリンタで印刷するフォームなど、ドキュメントをさまざまな未知のプリンタ モデルで確実に印刷する必要がある場合は、イメージ ベースの印刷または完全なラスタライズのアプローチがより安全で、より汎用性の高い選択肢となります。テキストの鮮明さのわずかなトレードオフは、プリンタのハードウェアに関係なく、すべての受信者が読みやすい出力を見ることができるという確実性の方が重要です。
PDF が開いて画面上では正しく表示されるが、印刷するとテキストが文字化けしたり、欠落したり、読めなくなったりする場合、その原因はほとんどの場合、ドキュメントのフォント処理レイヤーにあります。まず文書のプロパティでフォントの埋め込み状況を確認してください。参照フォントが存在する場合は、プリフライトまたは修復ツールを使用して、それらをサブセットとして埋め込みます。 「画像として印刷」は、フォント処理を完全にバイパスする即時の回避策を提供します。ラスター化されたテキストを含む永続的にフラット化された PDF に変換すると、どこにいても同じように印刷できる、ポータブルで将来性のあるファイルが生成されます。破損したフォント テーブルを構造レベルで修復すると、テキストの検索性が維持され、ファイル サイズが小さく保たれます。簡単な診断チェックと、それに続く特定のフォントの問題に一致する対象の修復を組み合わせることで、印刷出力が画面に表示されているものとまったく同じに復元されます。
PDFを修復してみる
インストールは必要ありません。ブラウザで直接動作します。
