Shell
從 shell 填寫 PDF 表單
是否有工具可以從 shell 以非互動方式填寫 PDF 表單?
對於我的案例,只需為每個欄位設置文本(以定義欄位的任何順序)並保存 PDF 文件就足夠了,但為了使問題更籠統,任何通過 CLI 進行的表單互動都值得讚賞(勾選框,選擇單選按鈕、填充文本、點擊按鈕等)。
我知道 poppler 有一些訪問 PDF 表單的功能,但是我找不到使用這些功能的 CLI 實用程序。
是的,
pdftk
有這個選項。從man pdftk
fill_form <FDF data filename | XFDF data filename | - | PROMPT>
使用 FDF 文件、XFDF 文件或標準輸入中的數據填充單個輸入 PDF 的表單欄位。在 fill_form 後輸入數據文件名,或使用 - 通過標準輸入傳遞數據,如下所示:
pdftk form.pdf fill_form data.fdf output form.filled.pdf
怎麼做?
1.Extrax欄位名稱
pdftk forms.pdf dump_data_fields
將刪除一個列表,其中包含以下條目:
--- FieldType: Text FieldName: Name_Last FieldNameAlt: LAST FieldFlags: 0 FieldJustification: Left ---
2. 創建
fdf
文件
fdf
-files 是表單填充器。我們使用一般符號作為<< /T(FIELD_NAME)/V(FIELD_VALUE) >>
並且需要添加頁眉和頁腳。資源
%FDF-1.2 1 0 obj<</FDF<< /Fields[ << /T (Name_Last) /V (Smith) >> << /T (Name_First) /V (John) >> ] >> >> endobj trailer <</Root 1 0 R>> %%EOF
保存為
input.fdf
3. 創建文件
pdftk forms.pdf fill_form input.fdf output filled.pdf
4. 也許你想再檢查一次?
pdftk filled.pdf dump_data_fields --- FieldType: Text FieldName: Name_Last FieldNameAlt: LAST FieldFlags: 0 FieldValue: Smith FieldJustification: Left ---
因此,姓氏已進入文件。
5. 附加動作
對於單選按鈕,該值是 - 條目之一
FieldStateOption
,對於復選框使用V(Yes)
和/V(Off)
。如果你想讓它更像是一種逐行查詢類型的東西,你可能想在它周圍包裝一個腳本,讀取欄位類型和名稱並提示輸入,然後自動創建
fdf
-file。但這本身就是一個小項目。或者,您可能更喜歡
xfdf
-format。它基於xml
-style 條目。看這裡。