自動 XFA ネイティブグラフィックと画像
ユニット: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF は、既存のテキストとウィジェットのコンシューマに加えて、rectangle、line、arc、インライン画像の draw コールバックを XDP から直接消費します
各 draw は実際のレイアウトページに置かれるネイティブ Form XObject を生成します。画像 draw は必要に応じて実際の Image XObject とアルファソフトマスクを含みます
ベクターパス
矩形はネイティブ PDF の矩形パスを使い、line はスラッシュ・バックスラッシュの傾きを保ち、楕円弧は 90 度以下の三次曲線セグメントを使います
最初の実効エッジが RGB ストローク色と太さ(ポイント未満の幅を含む)を供給します。ストロークのアピアランス境界は太さの半分を含むため、フォームが自身のボーダーをクリップすることはありません
arc は startAngle と符号付き sweepAngle を消費します。既定は 1 周で、掃引角の絶対値は最大 360 度です
draw の回転、スケール、平行移動のヒントは、draw 中心の周りの有限アフィン配置で 1 回適用されます。回転は反時計回りが正です。左上原点の XFA 座標はネイティブ PDF 原点へ 1 回変換されます
PNG と JPEG
| フォーマット | 実際のネイティブ消費 |
|---|---|
| PNG グレースケール | 1、2、4、8、16 ビットのサンプル。パックされたサンプルは 8 ビットへ展開され、16 ビット精度は保持されます |
| PNG RGB | 8 ビットと 16 ビットのカラーサンプル |
| PNG インデックスカラー | 1、2、4、8 ビットのインデックス。パレットを通じて RGB サンプルへ展開されます |
| PNG 透過 | グレースケールと RGB の透明サンプル、パレットアルファ、8 または 16 ビットの grayscale-alpha と RGBA。実際の /SMask ストリームがアルファ精度を保持します |
| PNG フィルタとインターレース | 5 種類すべての PNG 行フィルタと Adam7 パス。共有のネイティブ zlib と予測子実装で検証されます |
| JPEG | 8 ビットのベースラインおよびプログレッシブのグレースケール、RGB、CMYK フレーム。元の /DCTDecode ストリームを保持する前に共有ネイティブ JPEG デコーダーで検証されます |
PNG チャンクのチェックサム、順序、寸法、パレットインデックス、透明サンプル範囲、展開後の正確な長さは、候補を確定する前に検査されます。切り詰められたり過剰な圧縮データは準備を失敗させます
JPEG フレーム寸法は実際のネイティブデコードと一致しなければならず、Adobe CMYK 反転は画像辞書に明示的に宣言されます
JPEG には既存のネイティブ TurboJPEG ランタイムが必要です。HOTPDF_TURBOJPEG_LIBRARY で絶対ライブラリパスを指定でき、依存ライブラリは OS が探索します
画像のアスペクトは fit、none、width、height、actual に対応します。PNG pHYs と JPEG JFIF の密度が物理ピクセルサイズを決め、利用可能な密度がなければ 96 dpi を使います
スケールされた画像は中央寄せされ、XFA draw 矩形にクリップされます。アルファ合成はネイティブ PDF リーダーの操作のままです
上限とトランザクション
エンコード済み画像バイト、デコード済み作業バッファ、生の画像・アルファストリームは割り当て前に上限が課されます。ネイティブオブジェクト上限と画像・フォントストリームの合計上限も引き続き有効です
チャンク解析、データ展開、行デコード、ネイティブオブジェクト配置の間にキャンセルが検査されます。既存のネイティブ JPEG デコーダーは呼び出し側のトークンを受け取ります
準備失敗時は出力先の位置、長さ、バイトが保たれます。最後の出力先 WriteBuffer は呼び出し側ストリーム自身の I/O セマンティクスに従います
現在の限界
塗りつぶし図形、コーナーのスタイル、エッジ固有のボーダー、破線パターン、バーコード、外部画像転送、imageEdit ウィジェット、代替画像フォーマット、埋め込みカラープロファイル、Exif の向きは、追加のコンシューマ統合を必要とします
アニメーション PNG は既定の静止画像として消費されます。外部 XML の exData は別機能のままで、この draw アダプタが任意の埋め込みオブジェクトを実行することはありません
受け入れ
Tests/Linux/Build-XFAHeadlessGraphicFixtures.py は、決定論的な行フィルタ、Adam7、サンプル精度、透過、物理アスペクト、JPEG、不正プロトコルの各フィクスチャを生成します
Tests/Linux/XFAHeadlessGraphicsTests.pas は実際のネイティブ PDF を書き出して開き直し、失敗時の呼び出し側の保全を検証します。Verify-XFAHeadlessGraphics.py は pypdf と MuPDF で、デコード済み画像サンプル、/SMask 精度、ベクター演算子、配置、描画ピクセルを独立に検査します
自動 XFA ネイティブ PDF 生成は、既存のフィールドとテキストのコンシューマ、公開オプションと result API を説明します