ネイティブ Linux Cairo レンダラー
HPDFHeadlessCairoDevice は Cairo イメージサーフェスと FreeType を使って、読み込み済み PDF ページを RGB PNG にレンダリングします。ディスプレイサーバーも PDF リーダーも不要です
THPDFHeadlessDocument.GetRenderAccess(PageIndex) が返す借用ビューを渡し、レンダリングが戻るまでそのドキュメントを読み込み済みかつ未変更のまま保持してください
Document := THPDFHeadlessDocument.Create;
try
Document.LoadFromFile('input.pdf');
Options := THPDFHeadlessRenderOptions.Default;
Info := HPDFRenderHeadlessPagePNGFile(
Document.GetRenderAccess(0), 'page.png', Options);
finally
Document.Free;
end;
ランタイム依存関係
ネイティブ Linux は libcairo.so.2、libfreetype.so.6、標準フォントプロバイダーの Fontconfig 依存を使います。Helvetica / Times / Courier の代替用に適切なフォントをインストールしてください
HOTPDF_CAIRO_LIBRARY と HOTPDF_FREETYPE_LIBRARY で、最初のレンダリング前に明示的に互換ライブラリーパスを選べます。ネイティブフォントキャッシュが破棄コールバックを保持することがあるため、成功したモジュールはロードされたままになります
ネイティブフォントキャッシュが HotPDF のフォント破棄コールバックを保持しうるあいだ、ホストは自ホストの HotPDF 実行ファイル / DLL / パッケージコードをロードし続けなければなりません。キャッシュ寿命と無関係にホストモジュールをアンロードするのは、このプロファイルの範囲外です
Windows は同じブリッジ経由で互換の libcairo-2.dll と libfreetype-6.dll を使います。ランタイムバイナリーとそのライセンスはアプリケーション側で供給します
ICCBased カラーはさらに liblcms2.so.2 をロードします。JPEG は libturbojpeg.so.0、JPEG 2000 は OpenJPEG 2.5 互換の libopenjp2.so.7 を使います。これらの依存は対応する入力のときにだけロードされます
HOTPDF_LCMS_LIBRARY、HOTPDF_TURBOJPEG_LIBRARY、HOTPDF_OPENJPEG_LIBRARY でこれらのパスを上書きできます。Windows のデフォルトは lcms2.dll、turbojpeg.dll、openjp2.dll です
レンダリングプロファイル
対応コンテンツは、パスの構築とペイント、nonzero / even-odd フィルルール、クリッピング、ネストしたグラフィックス状態、CTM 変換、線スタイル、DeviceGray / RGB / CMYK カラー、通常アルファ、そして独自のリソース・Matrix・BBox を持つ Form XObject の繰り返しです
線幅は 0 でも構いません。0 w や ExtGState の LW=0 で要求された PDF のヘアラインは 1 ピクセルのデバイス空間ストロークになり、負の幅は拒否されます
ExtGState の D とコンテンツストリームの d オペレーターは上限付きダッシュ検証を共有します。実線を表す空パターン、奇数長の繰り返し、長さ 0 の要素、小数長、符号付きフェーズに対応します
ダッシュパターンは 1e9 までの有限かつ非負の長さを最大 256 個まで受け付けます。空でない場合は少なくとも 1 つの正の長さが必要で、フェーズは絶対値 1e9 までの有限値です。各要素は操作ワークを消費し、一時ストレージはワーキングバイトの受入に加算されます
オペランド配列は PDF コメントを受け付けます。数値ダッシュ配列や TJ テキスト配列も対象です。不正な字句値や閉じ括弧の欠落は共有スキャナーが保持し、サイレントに消えるのではなくレンダラーが拒否します
横書きテキストは、テキストマトリクス、明示 PDF 幅、正規の Helvetica / Times / Courier 送り、文字 / 単語間隔、水平スケール、TJ 調整を共有グリフインタープリターで処理します
埋め込み対応フォントプログラムは解決済みグリフ ID で FreeType を使います。Unicode ToUnicode マッピングはドキュメントテキスト API 経由で引き続き利用でき、標準フォントのラスタ形状はインストールされた代替フォントに依存します
複合テキストは Identity-H、Identity-V、明示的な埋め込みエンコーディング CMap ストリーム、内蔵の UniJIS / UniGB / UniCNS / UniKS の UCS2 / UTF16 横書き・縦書きマッピングに対応します。別途 CMap リソースをインストールする必要はありません
縦書きグリフのペイントは、デフォルト / 明示の DW2 / W2 位置ベクトル、テキストライズ、水平スケール、テキスト / グラフィックスマトリクス、TJ 変位を尊重します。UTF-16 マッピングは補助文字コードも受け付けます
8 種類すべてのテキストレンダリングモードに対応します。これには ET でクリップに蓄積される縦書きのフィル / ストローク / 不可視アウトラインも含まれます。埋め込みエンコーディング CMap ストリームは WMode と非恒等 CID マッピングを保持します
透過のフィル + ストローク複合操作はオブジェクトノックアウト合成を使うため、重なるフィルがストロークの下から漏れません。Type3 グリフ手続きは自身の上限付きリソースとフォントマトリクスで実行されます
画像は 1 / 2 / 4 / 8 / 16 ビットのサンプルと Decode 配列、ステンシル、明示マスク、カラーキーマスク、ソフトマスク、サイズの異なるマスク、Matte 復元を受け付けます。Interpolate の欠落はニアレストネイバー補間、true はバイリニア補間になります
JPX コードストリームは 26 ビットまでの符号付き / 符号なしソースコンポーネント(混合精度、サブサンプリング、明示的不透明度を含む)を受け付け、上限付きの 8 / 16 ビットサンプルへ正規化します。JPX 画像では、PDF 画像プロファイルの要求どおりイメージ辞書の BitsPerComponent と非ステンシル Decode エントリーを無視します
インデックスパレットと検証済み ICCBased プロファイル → sRGB 変換は、画像とパスカラーに対応します。プロファイルなしの DeviceCMYK は単純なデバイス変換を維持します
ICCBased 変換は Gray、RGB、CMYK、Lab、XYZ のプロファイルシグネチャーを受け付け、宣言されたコンポーネント数とコンポーネント範囲を厳密に検証します
Lab プロファイルのオペランドは物理 L a b 座標を使い、デフォルト範囲は [0 100 -128 127 -128 127] です。XYZ オペランドは物理 X Y Z 座標を使い、コンポーネントごとのデフォルトは符号なし 1.15 範囲 [0 65535/32768] です
XYZ プロファイル入力はネイティブ互換拡張であり、アーカイブ PDF 適合性を意味しません。Lab / XYZ ソースプロファイルは対応する透明合成スペースを選びません
ICC ストリームの Range はコンポーネントごとに 2 つの有限かつ順序付きの値を要求し、カラーオペランドを制限します。生画像の Decode デフォルトと Indexed ルックアップ値はこのコンポーネント範囲を使います
CalGray、CalRGB、Lab はパス・テキスト・画像・Indexed パレットベースに対応します。パラメーターは厳密に検証され、CalRGB の Matrix 要素は PDF の列順に従い、Lab のコンポーネントと画像 Decode デフォルトは宣言された範囲を使います
CIE カラーはブラッドフォード色順応と相対 sRGB 出力を使います。BlackPoint メタデータは検証し、黒点補正の追加やレンダリングインテント状態ポリシーは別の拡張のままです
Separation と DeviceN の複合カラーは、パス・テキスト・Indexed ベース・パック画像に対して 1〜32 のティントコンポーネントを保持します。デバイス / CIE の代替カラーは上限付きのサンプリング・指数・ステッチ・計算機ティント関数を使います
ICCBased の Lab / XYZ と CalGray / CalRGB / Lab の代替カラーソースは、対応する透明グループへの変換前に物理座標をティント変換まで保持します
多次元サンプリングティント関数は線形 / 三次補間、Domain、Encode、Decode、出力 Range、32 ビットまでのパックサンプル深度に対応します。三次評価は既存のスカラー 4 ノット規約をテンソル積で拡張し、短い次元は線形にフォールバックし、作業量とキャンセルは上限付きです
補間規約と個別のフォーミュラ / リーダーエビデンスは ネイティブ サンプリング カラー関数を参照してください
Separation None と None カラントのみを含む DeviceN 空間は色もノックアウト形状も寄与しません。None が混在するコンポーネントは引き続き代替ティント変換に到達します
Separation All は利用可能なすべての出力カラントにティントを適用します。ニュートラルな RGB ページ出力を使い、CMYK グループ内のすべてのプロセスコンポーネントを保持します
CMYK グループは合成前に、オリジナルの 4 コンポーネント代替ティント値を受け取ります。スポット Separation プレート、NChannel のプロセス / カラント選択、ミキシングヒントシミュレーションは別の拡張のままです
終端画像コールバックは、ネイティブの JPEG / JPEG 2000 / CCITT / JBIG2 デコードの前にドキュメント復号と先行ストリームフィルターを保持します。JBIG2 は算術 / Huffman テキスト、MMR、共有グローバル辞書に対応します
JPEG 2000 はサブサンプリングされた符号付きコンポーネント、推論されたカラー / サンプル宣言、埋め込み ICC プロファイル、明示的なカラースペース上書き、SMaskInData による分離 / 関連不透明度に対応します。コンポーネント値は 8 / 16 ビットへ正規化され、画像の Decode 配列は無視されます
埋め込みまたは明示的な Lab / XYZ ICC プロファイルは物理コンポーネント範囲を使います。関連不透明度は物理座標マッピング適用前に正規化済み保存サンプルから除去され、Lab のオフセットチャンネルは保持されます
グラフィックス状態の SMask は Alpha / Luminosity グループ、背景色、Form マトリクス、保存状態の復元、サンプリング・指数・ステッチ・上限付き計算機トランスファー関数に対応します。画像自身のソフトマスクはグラフィックス状態のソフトマスクを上書きします
16 種類の標準 PDF ブレンドモードすべてに対応します。Form / ページグループは分離 / 非分離合成、オブジェクトノックアウト、DeviceGray・DeviceRGB・DeviceCMYK・CalGray・CalRGB、1 / 3 / 4 コンポーネント ICCBased の合成スペースに対応します
較正済みグループはグループ境界までネイティブコンポーネント値を保持し、逆較正変換を通じてデバイス / Lab ソースカラーを受け付けます。Lab 自体は有効な合成スペースではありません
較正済み Luminosity マスクはグループ座標を保持したまま CIE XYZ-Y を評価します。グループ不透明度と背景色を含め、その後トランスファー関数を適用します
ノックアウト合成はオブジェクトの幾何形状をソフトマスク不透明度と別に保ちます。ステンシルの穴は先行オブジェクトを保ち、マスクされたパスはペイントされた幾何全体でそれらを置き換えます
ネストしたノックアウトグループは、不透明度 0 のオブジェクトを含む子の幾何形状の和集合を保持します。非分離の子グループは外側ノックアウトグループの初期背景を使います
CMYK グループは相補的な CMY と黒を別の上限付き画像プレーンに保持し、合成結果をグループ境界で変換します。分離不能ブレンドモードは選択されたモードに応じて黒を保持または置き換えます
非分離グループは追加の上限付き不透明度パスをレンダリングし、初期背景の寄与を除去して、入力グループのアルファとブレンドモードを 1 回だけ適用します。ページ透明グループはページ背景へ合成する前に分離サーフェスを使います
非分離 Form は外側の合成スペースを継承します。明示的なグループ CS エントリーは初期背景を別のスペースへ切り替えません
既存の通常注釈外観は変換後 BBox から Rect へフィットされます。RenderAnnotations=false はどちらの用途でも外観を省略します
Usage のデフォルトは hruView で、Hidden / NoView 注釈と Invisible 設定のある未知の注釈タイプをスキップします。PDF 2.0 の RichMedia / Projection を含む ISO 32000 標準注釈タイプは、対応する通常外観を持っていれば、Invisible だけが設定されている場合は可視のままです
RichMedia / Projection の受け入れは、有効なメディアアセットまたは関連するデフォルト 3D ビューを持つ既存の静的通常外観が対象です。メディア再生とインタラクティブ 3D の起動はこのラスターパスの範囲外です
hruPrint は Print 設定ありかつ Hidden クリアの注釈だけをペイントします。Invisible はどちらの用途でも未知の注釈タイプを抑制し、NoView は印刷を抑制せず、NoZoom は印刷時の外観サイズを変えません
可視注釈には既存の対応する通常外観ストリームが必要です。レンダラーは注釈メタデータやフィールド値から外観を合成しません
ビュー出力では、注釈の NoZoom は UserUnit を保ったまま外観サイズからレンダースケールを除去します。NoRotate はどちらの用途でもページ回転を通じてフィット済み外観を正立に保ち、両者とも変換後の左上 Rect アンカーとページクリップを保持します
既存の通常外観を持つテキスト注釈は、明示フラグにかかわらずビュー出力では NoZoom / NoRotate として振る舞います。印刷出力は NoZoom を無視しつつ NoRotate の振る舞いを保持します
Usage は静的ラスタ可視性と注釈ジオメトリーを制御します。インタラクション専用フラグはホバー / 編集動作を作らず、既存の抽出権限コールバックは印刷権限を与えないまま必須です
静的出力のオプションコンテンツ
レンダリングはカタログのデフォルト OCProperties/D 設定を消費し、BaseState からグループ状態を初期化し、ON / OFF の上書きを適用し、可視性の判定には一致する Intent 値を使います
メンバーシップ辞書は AnyOn、AllOn、AnyOff、AllOff に対応します。再帰的な VE 式は And、Or、単一オペランドの Not に対応し、VE は単純ポリシーより優先されます
null・利用不可・失効したグループ参照はメンバーシップに影響しません。設定のインテント外のグループは可視性を制御せず、適用可能なグループを持たないメンバーシップ / 式はコンテンツを可視のままにします
ネストした /OC マーク済みコンテンツ、画像 / Form XObject、注釈はこの結果状態を尊重します。隠れたマーク済みセクションはカラー・マトリクス・クリッピング・テキスト位置を更新し続け、隠れた XObject 全体と注釈はスキップされることがあります
通常のマーク済みコンテンツプロパティー辞書はネストしたインライン値を含め引き続き利用できます。コンテンツ配列は構成ストリームをまたいでマーク済みコンテンツ状態を保持し、子ストリームは自身のマーク済みコンテンツネストを維持します
スタンドアロンの最終フォームラスタライズは、ISO 32000-1:2008 セクション 8.11.4.5 の規定どおり、対話的な AS 使用推奨を自動適用せずに、view / print 両モードでデフォルト設定を使います。明示的な ViewerState により、View / Print / Export / Zoom / Language / User 推奨を永続手動選択と一時イベント状態つきで有効化できます
オプションコンテンツプロパティーの欠落や nil の借用カタログは、オプションコンテンツ構造から可視性効果を奪います。不正なライブメンバーシップ、式サイクル、設定された作業 / メモリー / 再帰上限は PNG 公開前に失敗します
アフィン外観マトリクスと非ゼロの BBox 原点はこれらのフラグのもとでも通常のフィットを保持します。極端に小さいレンダースケールでは、Cairo の初期ページマトリクスが数値的に非可逆になることもあります
レンダリングされたページは MediaBox / CropBox の交差、継承ページボックス、直角回転の Rotate、ページの UserUnit を使います。スケール 1 は実効ページポイントあたり 1 ピクセルで、サーフェス寸法は切り上げられます
sh オペレーターは関数ベース / 軸並行 / 放物線のシェーディング(ShadingType 1〜3)を、2 入力ドメイン、シェーディングマトリクス、円形ラジアル選択、Extend 端点、BBox、既存パスクリップつきでペイントします
対応するカラー関数とスカラー関数配列は、デバイス・較正済み・ICC Lab / XYZ・Separation / DeviceN のソースカラーを経由して変換します。現在のフィル不透明度、ブレンドモード、グラフィックス状態のソフトマスク、透明グループノックアウトは結果のシェーディングに適用されます
現在のパスとカラーは保持されます。sh はシェーディング Background を無視し、AntiAlias はピクセル中心カラーサンプリングのデバイスヒントです
未対応の ExtGState エントリーと未対応のコンテンツオペレーターはこのプロファイルの範囲外です
三角形メッシュシェーディング
ShadingType 4 と 5 は、エッジ再利用、任意の格子ジオメトリー、バイト境界整列の頂点レコード、32 ビットまでの座標精度、16 ビットまでのコンポーネント精度で、フリーフォーム / 格子 Gouraud 三角形メッシュをペイントします
頂点コンポーネントは色変換の前にデバイスピクセル中心で補間されます。オプションの 1 入力関数またはコンポーネント関数配列が補間パラメーターを評価します。較正済み・ICC・特殊カラースペースを含みます
Indexed ソースは補間インデックスを最も近いパレットエントリーに丸めます。16 進ルックアップ文字列は空白・大小混在の桁・奇数最終ニブルのパディングつきで 1 回デコードされ、リテラルルックアップ文字列はデコード済みバイトを保持します
現在の変換、クリッピング、BBox、フィル不透明度、ブレンドモード、ソフトマスク、非描画カラント、グループノックアウトは完成メッシュに適用されます。保持されたストリームバイト、一時ページサーフェス、2 つの格子行がワーキングメモリー受入に加わります
頂点パース、三角形ラスタライズ、関数は集計操作とキャンセルポーリングを共有します。不正 / 切り詰められたレコードや不完全な格子行は出力公開前に失敗します
焦点を絞った受け入れ検証は、閉形式の重心方程式と個別の MuPDF / Poppler 出力をチェックします。実証レコードは頂点パディング・未使用フラグビット・メッシュ透明性のソース・リーダー失敗を別に保存し、非描画カラーと正規化 Indexed 値には明示的な代替リーダー方程式を使います
Coons / テンソルパッチメッシュ
ShadingType 6 と 7 は、先行エッジ再利用、バイト境界整列レコード、下位 2 ビットのフラグ意味論、三角形メッシュと同じ座標 / コンポーネント精度で、三次 Coons 境界とテンソル制御ネットをペイントします
コーナーコンポーネントはオプション関数と色変換の前にパッチパラメーター上で双線形補間されます。Coons 境界は等価な双三次 Bernstein ネットへ持ち上げられ、その 2 階導関数境界が細分化を選択します。出力ピクセルの幾何誤差は最大 0.125 です
多項式逆変換がピクセルパラメーターを絞り込みます。折りたたみカバレッジは最大の v パラメーターを選び、v が等しければ最大の u パラメーターを選びます。後続パッチは完成シェーディングがオブジェクト透明性を受け取る前に先行カラーを置き換えます
共有メッシュ合成器はクリッピング、BBox、シェーディングパターン、非描画カラント、不透明度、ブレンド、ソフトマスク、グループノックアウトを適用します。2 つの細分行とピクセル別パラメーター / 順序配列がアクティブなワーキングバイト受入に加わります
制御点パース、細分化、ラスタライズ、カラー関数は操作上限とキャンセルを共有します。焦点受け入れは独立した Coons / テンソル方程式と折りたたみパッチ用の三次根を使い、ソース・リーダー失敗は通常の RGB 方程式ページ検証とは別に記録します
継承テキスト状態
Form・Type3・パターンの子ストリームは、初期グラフィックス状態から適用可能なフォントオブジェクト、フォントサイズ、文字間隔、単語間隔、水平スケール、レディング、レンダリングモード、ライズを継承します。同じフォント名の子リソースは、ローカルな Tf が選択するまで継承フォントを置き換えません
保存されたグラフィックス状態はテキストパラメーターを復元し、TD と二重引用符オペレーターは後続子ストリーム向けのレディングと間隔変更を保持します。各子ストリームは自身のテキストマトリクスで始まります
独立した注釈外観はページコンテンツの最終テキスト状態を保持せず、デフォルトテキストパラメーターから始まります
レンダリングモード 3 の Type3 テキストは可視グリフグラフィックスに寄与しません。焦点 Type3 ネストテキスト実証は MuPDF のデフォルトパラメーター逸脱を継承状態方程式とは別に保存し、Poppler はこれらのフィクスチャーで継承パラメーターに従います
タイリング / シェーディングパターン
パターンカラースペースはカラー / 無カラータイリングパターン、TilingType 1〜3、シェーディングパターン、PatternMatrix、セル BBox、正負の間隔、パターン選択、保存状態復元、フィル / ストロークペイントに対応します
無カラーパターンは対応するベースカラースペースから成分を取得し、画像ステンシルをペイントできます。明示的な色変更、カラー画像、無カラー定義内の直接シェーディングは不正な PDF コンテンツで、ネスト Form と Type3 手続きでも拒否されます
選択されたパターンは定義を解決したコンテンツストリームのデフォルト座標空間を保持します。後続の cm 操作や Form 内で使われる継承パターンはその原点を置き換えません
定義は親の初期対応グラフィックス状態とデフォルト透明パラメーターで始まります。タイリング定義は非分離・非ノックアウトグループを形成し、シェーディング定義はオブジェクトノックアウトを使います
透過・重複タイリングセルは現在の背景に対して評価されます。入力オブジェクトのアルファとブレンドモードは完成パターンのペイント時に 1 回適用されます。ネストパターン、テキスト、ストローク、画像マスクを含みます
シェーディングパターンの ExtGState は不透明度やソフトマスクを含む対応シェーディングパラメーターを補強します。Background はシェーディングの前にペイントされ、BBox は両方の寄与をクリップし、非描画 None カラーは色も形状も寄与しません
パターン評価は 2 つのページサーフェスとデコード済みセルコンテンツを受け入れ、可視セル列挙を現在のクリップに制限し、セルレンダリングと背景寄与の除去中にキャンセルをポーリングします
焦点フィクスチャーは閉形式の座標・カラー・合成方程式をネイティブピクセルと独立リーダー出力と比較します。実証ファイルは継承 Form パターン原点、シェーディングパターン ExtGState 不透明度、非描画 None カラーのリーダー差を保持し、これらのケースには個別の通常ベクター方程式ページがあります
CID キー付き CFF フォント
埋め込み CIDFontType0 フォントは、スタンドアロン / OpenType コンテナー双方で実 CFF CID を解決します。非恒等マッピング、CID 65535、埋め込み Encoding CMap、縦書き W2 原点、変換アウトライン、テキストクリッピングを含みます
スタンドアロン CFF フェイスは CID でロードし、SFNT ラップフェイスはコンパクトグリフインデックスでロードします。ブリッジは Linux LP64 と Windows LLP64 に正しい FreeType フェイスレイアウトを使います
未マップの文字コードや要求 CID の不在は、元コードについて notdefchar / notdefrange を参照し、置換がなければ必須の CID 0 グリフを使います。レンジは一定の CID ターゲットを持ち文字エントリーが優先され、存在するグリフは要求 CID を保持します
焦点受け入れは 28 の有効ソースに対して宣言されたポリゴン輪郭と原点方程式を使い、個別の MuPDF / Poppler 比較と通常 RGB 方程式ページを伴います
実証ファイルは CID キー付き OpenType のグリフ選択と省略された notdef 置換のソース・リーダー差を保持します。省略代替は別々に計測され、必須のネイティブソース方程式を置き換えません
上限とキャンセル
正確な内蔵 Type0 エンコーディングは同梱 200 のエンコーディング名すべてをカバーします。Identity-H / Identity-V、16 の UCS2 / UTF16 マッピング、平坦化された縦書き文字上書きつきの 182 の追加レガシー / Unicode マップです
1 バイトから 4 バイトの混合オペランドはバイト別コードスペース境界と最長プレフィックス不正コード復帰を使います。UTF8 / UTF32 デコードと逆エンコードは補助スカラーと意味のある先行ゼロバイトを保持します
Encoding / ToUnicode ストリームは本文 usecmap と辞書 UseCMap の名前 / ストリームを解決します。辞書が優先され、ローカル文字・レンジ・Unicode 列・notdef の上書きがあります
各子 CMap は自身の書き込みモードを保持し、WMode の省略時は横書きがデフォルトです。明示的な縦書きモードは継承マッピングとフォントの縦書きメトリクスを選びます
CMap 継承は THPDFCMapBounds レイアウトを変えずにスレッドローカルのネスト深さ上限を使います。サイクル、不正な親、超過深さは出力公開前に失敗し、finally ブロックがキャンセル / 例外後に上限を復元します
焦点実証は、その内蔵テーブルを持たない独立リーダーで名前付き UTF8 / UTF32 ソース失敗を保持し、個別の埋め込みマップコンパニオンを検証し、複数コードが同じ CID を選ぶときのソーステキスト差を記録します
Tests/Linux/Run-HeadlessLegacyCMapAcceptance.sh は正確なエンコーディング区間、混在幅ソース PDF、ネストレンダリング、スレッド分離、キャンセル復帰をネイティブ Linux 上でビルド / テストします
Tests/Linux/Run-HeadlessLegacyCMapWindowsAcceptance.py は対応するネイティブ Windows 実行ファイルを実行し、ソース・バイナリー・PNG・診断ハッシュを記録してから、固定キャプチャをネイティブ Linux ストレージへ転送して個別の MuPDF / Poppler チェックに供します
パックされたマップはリソースハッシュと完全な再配布表示を保持します。CMap データライセンスをソース / バイナリー配布物とともに同梱してください
PDF 名の値とコンテンツ名オペランドの 16 進エスケープは、フォント・カラースペース・ブレンドモード・リソースの解決前に 1 回デコードされます。デコードで生じたリテラルハッシュは意味的な名前の一部のままです
共有フォントデコーダーはフォント辞書値、名前付きエンコーディング、Differences グリフ名、CIDToGIDMap にこの意味論を適用します。借用オブジェクトを変更せず、文字列値もデコードしません
エスケープされたレンダラー名は線形デコード、一時ワーキングバイト受入、集計操作上限、キャンセルポーリングを使います。焦点受け入れは等価なネイティブ PNG バイトとテキスト、独立 MuPDF / Poppler 出力を比較します
シェーディングラスタ作業とカラー関数は集計操作上限とキャンセルポーリングを共有します。一時サーフェスと最大 8,192 変換色の正確座標キャッシュがアクティブなワーキングバイト受入に加わります
焦点シェーディング受け入れは閉形式の幾何 / 関数 / カラー方程式と個別のベクター方程式ページを使い、BBox クリッピング、退化ジオメトリー、色変換、特殊カラント名、ノックアウトテッセレーションのソース・リーダー差を保持します
Options はサーフェスピクセル、アクティブ管理バッファー、累積デコードバイト、エンコード済み PNG バイト、トークン / オペレーター作業、再帰 / グラフィックス状態深度を上限付けます
フォントデコードは保守的な受入許容量を使います。32 MiB の一時容量、デコード済みフォントストリームサイズの 64 倍、再帰チェック配列スロットの 128 倍、保持デコーダー推定の 2 倍がアクティブ集計に入ります
CID テーブルは保持エントリー 65,536 を受け入れます。列挙は実 charstring に境界を設け、notdef 配列はデコーダーディープコピーと保持バイト集計に加わります
CMap パースと notdef ルックアップはスレッドローカルのネストエントリー境界と作業ポーリングを共有します。レンダースコープは集計トークン / 操作上限を共有し、長い字句スキャンは最大 256 バイトごとにポーリングします
インタープリターはグリフレコード生成前に入力オペランドバイトと最長 ToUnicode マッピングからグリフ別 Unicode 列容量を確保するため、繰り返される長いマッピングがワーキングメモリー受入を迂回できません
小さなワーキングメモリー予算では、最終的な割り当てが収まるはずの単純フォントでも拒否されえます。これらのチェックは管理バッファーと CPU イメージサーフェスをカバーし、Cairo・Fontconfig・FreeType キャッシュやプロセス全体の RSS は集計の対象外です
透過・ソフトマスク・背景・不透明度・オブジェクトノックアウトのサーフェスはアクティブサーフェス予算に加わります。トランスファー関数は集計操作予算を共有し、ICC と画像コーデックは保守的な受入を使い、ネイティブ JBIG2 デコーダーはビットマップ / コンテキスト割り当てを累積的に上限付け、デコード中にキャンセルをポーリングします
相補 CMY・黒・幾何形状走査は集計操作・デコード・キャンセル上限を共有します。同じ解決済みストリームを使うプロファイルは、ページレンダリングが終わるまで 1 つの検証済み変換とアクティブ受入予約を共有します
保持された関数ストリーム、関数評価、グラフィックス状態レコードはワーキングバイト受入に加わります。再帰ティント関数、多次元補間、計算機命令は操作 / キャンセル上限を共有します
借用キャンセルトークンは上限付きデコード、トークン化、オペレーター、グリフリゾルバー呼び出し、画像行、再帰、PNG エンコード、公開前の各時点でポーリングされます。寿命は呼び出し側の所有です
レンダラーは借用ドキュメントポリシーを通じて抽出権限をチェックし、ソースオブジェクト値とソースバイトを保持します
出力の所有権
HPDFRenderHeadlessPagePNG は呼び出し側所有ストリームへ書き込む前に、レンダリングと PNG エンコードを非公開で完了します。最終ストリーム I/O 失敗では、すでに受け入れられたバイトが保持されることがあります
HPDFRenderHeadlessPagePNGFile はソース同一性をチェックし、ターゲットディレクトリーにステージングファイルを排他的に作成し、フラッシュし、同一性とキャンセルを再チェックして、宛先をアトミックに置き換えます
Windows 公開は最大 8 回のアトミック置換試行と 1 / 2 / 4 / 8 / 16 / 16 / 16 ミリ秒の 7 つの待機を使い、アクセス拒否・共有違反・ロック違反のエラーのみリトライします。キャンセルは毎試行前と各待機の両側でチェックされます
失敗した Windows 公開はキャプチャされた最終 Windows エラーコードを EHPDFHeadlessRenderError 経由で報告します。キャンセルはレンダラーのキャンセル診断を保持し、どちらのパスも既存宛先を削除せず、非アトミックコピーへフォールバックしません
レンダリング・予算・キャンセル・ステージング失敗は既存宛先を保存し、所有する未公開ステージングファイルを削除します。ソースパスとハードリンクエイリアスは拒否されます
受け入れ検証
Windows ランタイム受け入れは対応するネイティブコンソール実行ファイルと、SHA256 固定の分離ポータブル DLL インポートクロージャーを使います。別の WSL プロセスが Windows 生成 PNG に対して独立した MuPDF / Poppler のピクセル・方程式・ジオメトリーチェックを実行します
Windows 標準フォント代替は、クリッピングとフィル + ストロークモードを含め、Unicode テキストと実アウトラインに明示的な Cairo GDI フェイスを使います。埋め込みフォントは FreeType グリフマッピングを保持します
OpenJPEG 呼び出しは Windows stdcall ABI と Win32 修飾エクスポートを使い、ストリーム / メッセージコールバックは C コールバック規約を保持します
Tests/Linux/Run-HeadlessCairoAcceptance.sh は新しいネイティブ ELF ビルドを行い、DISPLAY と WAYLAND_DISPLAY をクリアし、直接リンクされたデスクトップライブラリーを拒否し、独立した pypdf / MuPDF オラクルを実行します
フィクスチャーは標準フォント、Unicode TrueType、Type3、全テキストレンダリング / ブレンドモード、アルファ / ノックアウト、RGB 透明グループ、サンプル深度 / Decode、画像マスク / Matte、Indexed / ICC カラー、終端コーデック、AES 暗号化フィルターチェーン、ページジオメトリー、注釈変換、予算、キャンセル、ソース保持、アトミック出力をカバーします
カウンターは THPDFHeadlessRenderResult、エラー処理は EHPDFHeadlessRenderError を参照してください