Windows FDF/XFDF 交換
Windows ファイルジョブと hpdf_document_execute_json_v1 は、ネイティブスカラーと上限付きリッチ XHTML / CSS コーデックを使って、fdf / xfdf 向けの forms.export / forms.import を実装します
ファイルジョブ
{
"schemaVersion": 1, "type": "forms.import", "format": "xfdf",
"input": "source.pdf", "output": "filled.pdf", "password": "owner",
"formDataInput": "values.xfdf",
"fonts": {
"regular": "DejaVuSans.ttf", "bold": "DejaVuSans-Bold.ttf",
"italic": "DejaVuSans-Oblique.ttf", "boldItalic": "DejaVuSans-BoldOblique.ttf"
},
"budget": {"memoryBytes": 268435456, "outputBytes": 134217728,
"timeMilliseconds": 60000, "resultBytes": 16777216}
}
forms.export は input、output、format、省略可能な password を使います。formDataInput や fonts は不要です。ファイルジョブはターゲットの隣に排他的な候補を予約し、フラッシュして閉じ、上限付き結果 JSON を検証してから、ターゲットをアトミックに置き換えます
フォント欠落、不正な入力、認証 / ポリシー失敗、上限枯渇、公開失敗は既存の完全なターゲットを保存します。出力はハードリンクを含め PDF やフォームデータ入力とエイリアスしてはいけません
名前付きフォントファミリー
forms.import は操作ルートで fontFamilies を 1〜16 個のラベル配列として受け付けます。省略すると元の単一ファミリープロファイルと fontFamily コールバックラベルが維持されます
"fontFamilies": ["DejaVu Sans", "DejaVu Serif Condensed"],
"fonts": {
"DejaVu Sans": {
"regular": "DejaVuSans.ttf", "bold": "DejaVuSans-Bold.ttf",
"italic": "DejaVuSans-Oblique.ttf", "boldItalic": "DejaVuSans-BoldOblique.ttf"
},
"DejaVu Serif Condensed": {
"regular": "DejaVuSerifCondensed.ttf", "bold": "DejaVuSerifCondensed-Bold.ttf",
"italic": "DejaVuSerifCondensed-Italic.ttf", "boldItalic": "DejaVuSerifCondensed-BoldItalic.ttf"
}
}
ファイルジョブでは、fonts が正確に設定されたラベルをキーとするオブジェクトを含みます。fontFamilies がなければ元の直接スタイルパスオブジェクトを維持します。実際のファミリー / スタイルプログラムのみを読み取り、選択されたすべてのフォントバイトが操作予算を共有します
Windows V1 コールバックでは、既存のフォントコールバックが実際の正規 UTF-8 設定ラベルと選択スタイルを受け取ります。4 スタイルすべてを使う 2 ファミリーで 8 件の実際のプログラム要求が発生し、コールバックレコードは不変です
ASCII ラベル文字は大文字小文字を無視して比較され、それ以外の Unicode 文字は正確に比較されます。ラベルは重複なし・非空・最大 128 UTF-16 コード単位で、前後の空白、制御文字、ペアになっていないサロゲート、CSS の引用符 / セパレーター句読点は使えません
最初に設定されたファミリーがスカラーテキストと継承リッチスタイルのデフォルトです。デフォルトでは CSS の font-family リストはネイティブコーデックの first-known-family 選択を使います
オプトインの fallbackFontFamilies=true は、順序付きインライン CSS font-family 候補を保持し、書記素単位フォールバック向けに実際に設定されたフェイス / スタイルプログラムをロードします。型付き候補、コールバックローディング、リッチ専用スコープは Windows 指定ファミリーリッチフォントフォールバックを参照してください
適用結果は richXMLProfile の inline-xhtml-font-families-v1、設定された fontFamilies 配列、family・style・bytes を含む実際の fontFamilyStyles オブジェクトを報告します。fontStyles は元のオブジェクト配列型を維持しスタイル別バイト数を集計し、fontBytes はすべての実際のプログラムを数えます
配列がなければ richXMLProfile は inline-xhtml-v1 です。スカラーとオリジナル型付きリッチの混合 forms.fill は、後述の original-typed-runs-v1 バインディングを使います。旧式のジョブフォントコールバック拡張は別の後続作業のままです
バージョン付き Windows C コールバック
hotpdf_abi_form_data.h を include し、hpdf_form_data_operation_v1 を埋め、operation.struct_size に完全なサイズを設定して、変更なしの操作プレフィックスを hpdf_document_execute_json_v1 に渡してください
省略可能なフォントコールバックは UTF-8 ファミリーバイトとスタイル(0 regular、1 bold、2 italic、3 boldItalic)を受け取り、実際のフォントプログラムへの完全な hpdf_io_v1 読み取りテーブルを返します。リッチデータが 4 スタイルすべてを使うなら 4 プログラムすべてを提供してください
スカラーデータは regular プログラムを要求し、fontFamily のデフォルトは DejaVu Sans です。渡されたフォント IO コールバックとユーザーデータは操作が戻るまで有効でなければならず、非ゼロのコールバックステータスはスティッキーで、フォールバックリトライなしに伝播します
forms.import では InputIO が FDF / XFDF を供給し、宛先はすでにロード済みでなければなりません。OutputIO が候補 PDF を受け取り、ResultIO が上限付き JSON を受け取ります。forms.export は元の V1 レコードを使い、FDF / XFDF を OutputIO へ書きます
Windows の hpdf_document_load_from_io は、戻る前に完全な入力をイミュータブルな所有ソースへコピーします。呼び出し側による置換や追記は、アクティブなロード済みリビジョンやその後のフォームデータ出力を変えられません
所有ソースはバックグラウンドランダム読み取り用の別の同期ハンドルを使うため、プリフェッチが逐次公開カーソルを動かすことはありません。候補ドキュメントはソース破棄の前にバックグラウンドリーダーを解放します
アクティブコンテキストは、出力 / 結果両コールバックの成功と最終キャンセルチェックポイント通過後にのみ切り替わります。コールバック失敗やキャンセルは候補を破棄し、前のドキュメントと所有ソースを保持します
コールバックは後続のコールバックが失敗する前に候補バイトを受け取っていることがあります。呼び出し側は execute 関数が HPDF_STATUS_OK を返した後にのみ、自前の出力宛先をコミットしてください
元の V1 レコードレイアウトとエクスポートシンボルは不変です。この Windows 拡張はネイティブ Linux が公開しているコールバック拡張とは別物です
バインドされるエントリーポイントはファイルジョブプロセッサーと hpdf_document_execute_json_v1 です。旧式の HPDFDocRunJob コールバックレコードと汎用 ExecuteLoadedOperation はこの段階ではフォント拡張を取得しません。Pascal 呼び出し側は明示的なトランザクションクラスを使えます
フィールド、リッチテキスト、ポリシー
対応する値は、ネストした Unicode テキスト名、チェックボックス / ラジオのエクスポート名、複数選択配列、変更なしの読み取り専用値です。/V、/RV、実際の AP リソースは一緒に保存されます。未知のフィールドと必須フィールド制約はトランザクションを失敗させます
リッチ交換は文書化された上限付き XHTML / CSS プロファイルと実際に指定されたスタイルフォントを使います。任意の HTML、全 CSS、無制限のリッチ XML 対応は主張しません
署名済み AES R5 / R6 更新は完全な元プレフィックス、暗号化パラメーター、永続暗号化 ID、既存 CMS 署名を保持します。変更なしのスカラー / リッチインポートは、カレントコミット済みリビジョンとバイト等価です
既存 CMS の完全性と ESS 署者バインディングは、署名フォーム更新の前に認証されます。P2 / P3 のフィルはその実際の制約内でのみ許可されます。P1、FieldMDP ロック、変更された読み取り専用フィールドは公開を拒否します
signaturePolicy はブールの requireCAdES、requireTimestamp、requireAdobeRevocationInfo、requireTimestampRevocation を受け付けます。trustedCAFile、timestampCAFile、timestampCRLFile、revocationCAFile は NUL を含まない文字列でなければならず、要求されたチェックに対して明示的な呼び出し側トラストを選びます
C コールバックオプションは maxEvidenceBytes と maxEvidenceObjects で署名付きエビデンスも制限します。トラスト検証はデフォルトの署名完全性チェックとは別物です
formData は maxBytes、maxFields、maxObjects、maxDepth、maxValues、maxValueCodeUnits、maxTotalCodeUnits を引き下げられます。これらの正確な正整数はさらにワーキング容量でクランプされます。budget の objectCount と pageCount が候補ドキュメントを制限します
budget.timeMilliseconds が操作デッドラインを設定します。Windows C コールバックはさらに厳しい追加上限として elapsedMilliseconds も受け付けます。キャンセルはカレントグラフ準備、フォームデコード、フォント読み取り、CMS チェック、候補ローディング、公開の間にポーリングされます
ケイパビリティーは実際のフォーマット、スタイル、イミュータブル入力、トランザクション型コールバック挙動を報告します。注釈交換、埋め込み FDF ファイル、アクション、インクリメンタル FDF ドキュメントは別の未完了ケイパビリティーのままです
関連トピック
混合スカラー / オリジナル型付きリッチフィルは、ファイルジョブと execute-json-v1 を通じて同じ認証済み Windows 候補ライフサイクルを使います
トランザクションクラス、カレントグラフ準備、ネイティブフォームデータ
内部スタイルシートは、有界なセレクター、important、詳細度、ソース順序を、実際にインポートされたリッチ値と保存された外観に適用します。等価なインポートの繰り返しや公開失敗でも、既存のトランザクション保証は保持されます
richTextResources は、既存のトランザクションとフォントバインディングを使って、実際の Windows ファイルジョブと execute-json-v1 インポートにリンクおよびインポートされた CSS を供給します