Windows FDF/XFDF 交換
Windows 檔案作業與 hpdf_document_execute_json_v1 為 fdf 與 xfdf 實作 forms.export 與 forms.import,使用原生純量與有界富 XHTML/CSS codec
檔案作業
{
"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,為一到十六個標籤的陣列;缺省時保留原始單字族設定檔與 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 時保留原始的直接樣式路徑物件;只讀取實際用到的字族/樣式程式,所有選取的字型 bytes 共用作業預算
對 Windows V1 回呼,既有的字型回呼會收到每個實際的標準 UTF-8 設定標籤與選取樣式;兩個字族用滿四種樣式會產生八次真實程式請求,且回呼記錄不變
ASCII 標籤字母比對不分大小寫,其他 Unicode 字元精確比較;標籤必須相異、非空、至多 128 個 UTF-16 code unit,前後不得有空白、控制字元、未配對代理對或 CSS 引號/分隔符標點
第一個設定的字族是純量文字與繼承富樣式的預設;預設情況下,CSS font-family 清單採用原生 codec 的第一個已知字族選擇
選填 fallbackFontFamilies=true 會保留有序的行內 CSS font-family 候選,並載入實際設定的字面/樣式程式做整個 grapheme 層級 fallback;帶型別候選、回呼載入與僅富文字範圍見 Windows 提供字族的富文字 fallback
套用後的結果回報 richXMLProfile inline-xhtml-font-families-v1、設定的 fontFamilies 陣列,以及含 family、style 與 bytes 的實際 fontFamilyStyles 物件;fontStyles 保持原始的物件陣列類型,並按樣式彙總 byte 數;fontBytes 計入所有實際程式
沒有陣列時,richXMLProfile 為 inline-xhtml-v1;混合純量與原始輸入富文字的 forms.fill 使用下面描述的獨立 original-typed-runs-v1 綁定;較舊的 job 字型回呼擴充仍屬後續工作
版本化 Windows C 回呼
引入 hotpdf_abi_form_data.h;填寫 hpdf_form_data_operation_v1,把 operation.struct_size 設為其完整大小,再把未變更的作業前綴傳給 hpdf_document_execute_json_v1
選填的字型回呼收到 UTF-8 字族 bytes 與樣式 0 regular、1 bold、2 italic 或 3 boldItalic,並為實際字型程式回傳完整的 hpdf_io_v1 讀取表;富資料用滿四種樣式時請提供全部四個程式
純量資料請求 regular 程式;fontFamily 預設為 DejaVu Sans;提供的字型 IO 回呼與 user data 必須在作業回傳前保持有效;非零回呼狀態是黏性的,會直接傳播,不會退回重試
forms.import 由 InputIO 提供 FDF/XFDF,目的地必須已載入;OutputIO 收候選 PDF,ResultIO 收有界 JSON;forms.export 使用原始 V1 記錄,把 FDF/XFDF 寫到 OutputIO
Windows hpdf_document_load_from_io 在回傳前把完整輸入複製成不可變的自有來源;呼叫端的替換或附加無法改變作用中的已載入修訂版或其後續的表單資料輸出
自有來源使用獨立的同步 handle 做背景隨機讀取,預取無法移動循序發布游標;候選文件會在其來源銷毀前釋放背景讀取器
作用中的內容只在輸出與結果回呼都成功且最後取消檢查點通過後才會改變;回呼失敗或取消會捨棄候選,保留先前的文件與自有來源
某個回呼可能在後續回呼失敗前已收到候選 bytes;呼叫端必須等 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 更新保留完整的原始前綴、加密參數、永久加密識別碼與既有 CMS 簽章;未變更的純量或富匯入與目前提交的修訂版 byte 級相同
既有 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 檢查、候選載入與發布期間輪詢
capabilities 回報實際格式、樣式、不可變輸入與交易式回呼行為;註解交換、內嵌 FDF 檔、action 與增量 FDF 文件仍是未完成的獨立功能
相關主題
混合純量與原始輸入富文字填寫透過檔案作業與 execute-json-v1 使用相同的認證 Windows 候選生命週期
內部樣式表把有界的選擇器、important、特異性和來源順序套用於實際匯入的 rich 值與已儲存外觀;重複的等價匯入與發布失敗保留既有交易保證
richTextResources 為實際的 Windows 檔案工作與 execute-json-v1 匯入提供連結與匯入的 CSS,使用既有交易與字型綁定