PDF ドキュメントのフォントをパックし、最適化する

皆さん、こんにちは

PDF フォーマットについて言えば、その強力な機能の 1 つは、ソフトウェア、ハードウェア、またはオペレーティング システムに関係なくドキュメントを正確に表示することです。
したがって、ドキュメントの内容をレンダリングするために使用されるフォントは、ドキュメント構造の不可欠な部分になります。 サイズが重要なので、フォントをパックすることでファイル サイズを縮小してみましょう。

文字、グリフ、フォント

あなたが話すとき、あなたは文字を使います。 それらは抽象です。
書くときは、グラフィカル シンボルを使用してこれらの抽象的な文字をレンダリングします。 それらはグリフと呼ばれます。

グリフは、フォントと呼ばれる一連のグリフにグループ化されます。
各フォントには、直接使用のために設計されたプログラムとして構成されたグリフ記述が含まれています。 その結果は、フォント フォーマットを特徴付ける特定の拡張子を有するフォント ファイルです。

このようなフォント ファイルは、コンテンツで使用される文字や記号の描画方法を正確に記述しています。

次のステップは、他のユーザーのために同じ文書レイアウトを維持し、同じファイルを取得することです。

ここで問題になるのは、結果として得られる PDF ドキュメントのファイル サイズです。

PDF 内のフォント

上記のように、前述のフォント プログラムは、PDF ドキュメント構造の必要な部分です。 その理由は、すべてのデバイスで同じビジュアル ドキュメントのレイアウトを保持するためです。

一般に、PDF ドキュメントにフォント ファイルを含めるとき、2 つの方法が起こります。 フォントは、ドキュメント構造に埋め込まれていても、あるいは埋め込まれていなくてもよい。
非埋め込みフォントは、フォント ファミリ、フォント スタイル、またはテキストをレンダリングするために使用するフォントを表示するためのエンコーディングなど、必要なフォント パラメータの一部のみを指定します。 PDF ビューアは、不在グリフをいくつかの定義済みグリフで置き換えようとします。このようにして、いくつかのシンボルはシンボルが作成されたときと異なる視覚的外観を持ったり、描画が不可能なことがあります。

このアプローチ方法は、結果として得られるドキュメント サイズに最も影響しますが、しばしばレンダリングが不十分になります。

埋め込みフォントは、完全なフォント プログラムとしてつまり完全な文字セットとして PDF ドキュメント自体に格納されます。 ドキュメントのコンテンツは、デザインするときとまったく同じレイアウトで、すべてのユーザーとすべてのデバイスでレンダリングされます。
ここでの唯一の重要な点は、フォント ファイル全体がドキュメント構造内に挿入されるため、ドキュメント サイズに最も大きな影響があることです。

サブセッティング

ドキュメントをアーカイブするときは、ファイル サイズは常に重要です。
フォント サブセットのみを埋め込むことは、ドキュメント コンテンツの変更されていない視覚的外観を維持しながら、ファイル サイズをできるだけ小さく保つための最善の解決策のように見えます。

フォントをサブセット化する処理は、ドキュメント レイアウトで実際に使用されるフォント ファイルのグリフのみを格納することを意味します。

したがって、アーカイブの前など、ドキュメントの最終段階では、使用されているグリフを含めるだけで使用されていないフォント プログラムを再構成し、未使用のものを廃棄することで、フォント ファイルを最適化できます。
これにより完全に埋め込まれたフォント ファイルの利点を生かし、PDF ドキュメントのファイル サイズを大幅に削減することができます。

フォントのパッキング

バージョン 14.0.61 から、フォント パッキング機能は、主に保存またはアーカイブの準備が整っている PDF ドキュメントにフォントの最適化を提供します。
多くの場合、PDF ドキュメントは、フォントの最適化が弱い、あるいはまったくなくても最終段階に達します。 結果として得られるドキュメントは大きく、ストレージの問題を引き起こす可能性があります。便利な PackFonts() メソッドは、これらの問題を 1 つのステップで解決します。

  1. シーンの背後にあるプロセスをすばやく表示するには、いくつかの秘密があります:
    ツールキットは、PDF ドキュメント内のすべてのテキストを、組み込まれた埋め込みフォント ファイルに関連付けます。
  2. 完全に埋め込まれたフォントを検出すると、このフォント ファイルの対応するサブセットを作成し、最初に埋め込まれたフォントをサブセットされたフォントに置き換えます。
  3.  フォント サブセットのみが埋め込まれている場合、ツールキットは、含まれているサブセットが正しいことを確認し、不要な残存情報を削除します。 これは、最終的なドキュメントをより小さなものに分割する場合などに発生する可能性がありますが、新しく作成されたドキュメントのそれぞれには、ソースから完全に埋め込まれたフォントが含まれます。
  4. 最後に、パッキング機能は、格納されたフォント ファイル内の他のすべての不要なデータを削除します。このように最適化された PDF ドキュメントのファイル サイズが縮小され、ドキュメントを保存してスペースを節約できます。

是非、PDF のフォント パッキングと最適化を提供する GdPicture ツールをお試しください。 最新のリリースをダウンロードしてください!

Sample Code (C#)

string caption = "Example: PackFonts";
using (GdPicturePDF oGdPicturePDF = new GdPicturePDF())
{
    if (oGdPicturePDF.LoadFromFile("test.pdf", false) == GdPictureStatus.OK)
    {
        if (oGdPicturePDF.PackFonts() == GdPictureStatus.OK)
        {
            if (oGdPicturePDF.SaveToFile("test_optimized.pdf") == GdPictureStatus.OK)
            {
                MessageBox.Show("The example has been followed successfully.", caption);
            }
            else
            {
                MessageBox.Show("The file can't be saved. Status: " + oGdPicturePDF.GetStat().ToString(), caption);
            }
        }
        else
        {
            MessageBox.Show("The error occurs when optimizing fonts. Status: " + oGdPicturePDF.GetStat().ToString(), caption);
        }
    }
    else
    {
        MessageBox.Show("The file can't be opened. Status: " + oGdPicturePDF.GetStat().ToString(), caption);
    }
}

お時間をいただき、ありがとうございました!

デスクトップおよびサーバー デプロイメントが 100% ロイヤリティ フリーのオールインワン画像処理 SDK GdPictre.NET 製品概要はこちら

参照記事:
「Pack and Optimize Fonts in PDF Documents with GdPicture.NET」 2018/9/5

シェアする

  • このエントリーをはてなブックマークに追加

フォローする