シェルからPDFフォームを作成する

シェルからPDFフォームを作成する

シェルから非対話形式でPDFフォームを作成するツールはありますか?

マイユースケースでは、各フィールドにテキストを設定し(フィールドが定義されている順序に関係なく)PDFファイルを保存するだけで十分ですが、質問をより一般的にするために、CLIを介してあらゆる種類の対話が可能です(チェックボックス、ラジオボタン、塗りつぶされたテキストの選択、ボタンクリックなど)。

私はPopplerが一部の機能PDF フォームにアクセスするが、これらのフォームを使用する CLI ユーティリティが見つかりません。

答え1

はい、pdftkこのオプションがあります。 ~からman pdftk

fill_form <FDF data filename | XFDF data filename | - | PROMPT>

FDFファイル、XFDFファイル、または標準入力からのデータを使用して、単一入力PDFのフォームフィールドに入力します。 fill_formの後にデータファイル名を入力するか、-を使用して次のようにstdinを介してデータを渡します。

pdftk form.pdf fill_form data.fdf output form.filled.pdf

どうすればいいですか?

1. フィールド名の抽出

pdftk forms.pdf dump_data_fields

次の項目を含むリストが削除されます。

---
FieldType: Text
FieldName: Name_Last
FieldNameAlt: LAST
FieldFlags: 0
FieldJustification: Left
---

2.fdfファイルの生成

fdf- 文書はフォームフィラーです。私たちは一般的な表記法を使用します

<< /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. さらなる処理

ラジオボタンの場合、値は-entriesの1つでFieldStateOption、チェックボックスの場合とをV(Yes)使用します/V(Off)


1行ずつクエリタイプを作成したい場合は、フィールドタイプと名前を読み、入力するように求められ、自動的にファイルを生成するスクリプトを囲むことをお勧めしますfdf。しかし、これはそれ自体が小さなプロジェクトです。

またはあなたが好きかもしれませんxfdf-形式(参照)より良いもの。xml-styleエントリに基づいています。

関連情報