リソースと画像の最適化
HotPDF は、ページグラフィックス状態セマンティクスを変更したり、継承されたリソースと注釈外観を壊したりせずに、ロード済みドキュメントサイズを削減できます
コンテンツとリソースの統合
繰り返されるインライン画像は、出現回数とペイロードのしきい値を満たすと共有画像 XObject になります
未使用のページリソース名は、ページコンテンツ、ネストされた Form XObject、注釈外観ストリームをスキャンした後、保守的に削除されます
互換性のあるページコンテンツストリームはデコードされ、安全なトークン境界で結合され、単一の Flate ストリームに正規化されます
Form XObject と埋め込みフォントは、正規化されたデコード済みコンテンツと再帰的に正規化されたリソースグラフから重複排除され、比較中に互換性のあるフォントサブセットプレフィックスが正規化されます
ロード済みフォントサブセッティング
SubsetLoadedFonts はページコンテンツ・ネストした Form XObject・注釈外観ストリームを通じて文字コードを追跡し、各コードを PDF フォントエンコーディングと CID マッピングで解決して、到達可能なグリフプログラムだけを保持します
フォントディクショナリ・CID マップ・幅・ToUnicode データは既存の識別子を保ちます。TrueType・CFF・Type 1 のサブセット化はグリフ ID またはグリフ名を保持するためです。共有される埋め込みプログラムは、1 回の書き換えの前に、互換性のあるすべてのフォントディクショナリから使用状況を集計します
TrueType の複合グリフと COLR v0/v1 のアウトライン依存は再帰的に閉じられます。カラー・ビットマップ・バリエーション・シャーピングの各テーブルはそのまま保持されます。Type 1 の PFB、分割バイナリ、16 進 PFA プログラムは使用中の CharStrings を保持し、未使用のエントリを有効な同長 endchar プログラムで置き換えます
この操作は、使用中のコードが 1 つでもマップできない場合にフォントプログラム全体をスキップし、より小さい raw または Flate の候補だけを採用します。既定では署名付きドキュメントを拒否するため、署名の無効化に同意するには呼び出し側が明示的にオプトインしなければなりません
画像ポリシー
JPEG 再圧縮では、対象となるカラースペース・出力品質・最小バイト削減量を選択します
JPEG 2000 の最適化は、無損失と視覚的に無損失のプロファイル、省略可能なタイル、明示的に無効化されていないプロファイルを通じた 5 つのプログレッションオーダーすべてに対応します
視覚コスト再圧縮は、デコード済みソースに対して上限付きの JPEG / JPEG 2000 品質トライアルを評価し、知覚誤差または最小削減量の制限外の候補を拒否した上で、重み付きの視覚誤差とバイトコストのスコアが最小のものを決定論的なタイブレークで選択します
JBIG2 のグローバルデータは、デコード済みグローバルセグメントのバイト列が jbspExactGlobalsOnly の下で正確に一致する場合にだけ共有されます
実効 DPI のダウンサンプリングは、ページとネストした Form の各マトリックスに従い、カラーマネジメントされたソースピクセルをデコードし、ソフトマスクを所有する画像とともに再サンプリングします
画像書き換えのカラー変換は、対応する ICCBased・CalGray・CalRGB の入力をキャリブレーテッド RGB へ変換します。未対応のキャリブレーテッド入力は、プロセス RGB へ変換する代わりにそのまま残ります
DownsampleLoadedImages は、対応する 8 ビットの raw・Flate・LZW・ASCII・RunLength の Separation / DeviceN 画像をコンポーネント空間で直接リサイズします。正確なカラースペースグラフ・tint 変換・色材・/Decode 範囲・オーバープリントのセマンティクスを保持します
DCT・JPX・JBIG2・CCITT のスポット画像は、コーデックが元の版のサンプルを公開できない場合、変更されずに残ります
ベクター描画・画像・パターン・シェーディング・透明度・ICC リソースを横断して、一様な Gray / RGB / CMYK プロセススペースが必要な出力の場合は loaded-page colour rewrite を使用します
適応オブジェクトストリーム
オブジェクトストリームパッキングは、オブジェクト番号の局所性を保持し、再度変更される可能性が高いダーティオブジェクトを除外しつつ、メンバーサイズ、ターゲットコンテナバイト、メンバー数を境界付けることができます
適応パッキングを有効にすると、必要な PDF バージョン、xref ストリーム、完全な書き換えも要求されます
主要 API
THotPDF.ExternalizeRepeatedInlineImagesTHotPDF.RemoveUnusedLoadedPageResourcesTHotPDF.CoalesceLoadedPageContentStreamsTHotPDF.DeduplicateLoadedFormXObjectsTHotPDF.DeduplicateLoadedEmbeddedFontsTHotPDF.SubsetLoadedFontsTHotPDF.RecompressLoadedJPEGImagesTHotPDF.OptimizeLoadedJPEG2000ImagesTHotPDF.OptimizeLoadedImagesByVisualCostTHotPDF.ShareLoadedJBIG2GlobalsTHotPDF.DownsampleLoadedImagesTHotPDF.RewriteLoadedPageColorsTHotPDF.ConfigureAdaptiveObjectStreamPacking