ポータブルな XFA パスワード外観
Unit: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF は、XFA の passwordEdit フィールドを、PDF パスワードフラグと埋め込みフォントのマスク外観を持つネイティブテキストウィジェットとして、Windows と Linux で消費します
外観は Unicode スカラー値ごとに 1 個のアスタリスクを含みます。UTF-16 サロゲートペアで表現された補助文字は 1 個のアスタリスクを生み、結合記号と ZWJ はそれぞれ自身のアスタリスクを寄与します
ネイティブの /V は、記述された完全な Unicode 値を保持します。外観のマスキングは暗号化を提供せず、その値を PDF から除去しません
たとえば、A😀B は 3 個のアスタリスクを生み、é は結合アクセントが別スカラーのため 2 個を生みます
上限とキャンセル
アダプタは、スカラーを数えている間にキャンセルを検査し、マスク文字列を割り当てる前に残りのグリフ合計予算を検査します
TXFAHeadlessPDFResult.GlyphUnits は、パスワード外観のために実際に生成されたアスタリスクを数えます。通常テキストとその他の外観コンシューマの既存 UTF-16 計上は変わりません
2 つの補助文字は、残り MaxGlyphs 予算 2 に収まります。予算 1 はマスク割り当ての前に失敗します
元の値は引き続き入力・オブジェクトバイト上限の対象であり、すべてのフィールドが外観合計予算を共有します
準備、予算、キャンセルの失敗は、呼び出し側の宛先位置、長さ、既存バイトを変更しません。宛先書き込みエラーはストリーム自身の部分書き込み動作に従います
検証
Tests/Linux/XFAHeadlessPasswordTests.pas と Windows・Linux のパスワードランナは、正確な予算、キャンセル境界、ストリーム保存、再試行動作を検証します
独立した検証器は、ネイティブ値、フラグ、実際の AP CID 列、ToUnicode、埋め込みグリフ ID を検査し、その後、保存された PDF を MuPDF でレンダリング・抽出します
自動 XFA 作成が、その他のネイティブフィールド・描画コンシューマを記述します