Shell

從 shell 填寫 PDF 表單

  • April 3, 2021

是否有工具可以從 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 條目。看這裡。

引用自:https://unix.stackexchange.com/questions/643062