一部のデータ コンピューティング (Java を使用) に従って、pdf テンプレートの変更を自動化しようとしています。
私はpdfの変更の経験がなく、これを行うために使用しようとしitext7
ています.
PDFにテキストを追加する方法を読んでいますが、ここでも、「キー」を使用してAcrosfieldが存在する場合にそれらをフィールドする方法を見ました
それにもかかわらず、私が使用している pdf テンプレート (変更可能) を作成していないため、手動で入力できるフィールドが Acrosfields または別の技術で作成されているかどうかはわかりません。各フィールドに 1 つあれば...
この質問を見ました。ここには、すべてのフィールドとその値を取得する方法が示されていますが、唯一の答えに表示されるコードを試すと、
main.java:[40,0] error: illegal start of type
main.java:[40,19] error: ')' expected
main.java:[40,30] error: <identifier> expected
3 errors
この部分では:
for (String fldName : fldNames) {
System.out.println( fldName + ": " + fields.getField( fldName ) );
}
少し試してみると、より多くの情報が見つかりましたが、可能であればこれらの「キー」を取得する方法が見つかりません...
- - - - 編集 - - - -
各フィールドに Acrosfield のキーの名前を持つ PDF テンプレートのコピーを作成するために、このコードを作成しました。
package novgenrs;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Set;
public class MakePDF {
public static void MakePDF(String[] args) throws IOException, DocumentException{
PdfReader reader = new PdfReader("template.pdf");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("result.pdf"));
//AcroFields form = stamper.getAcroFields();
AcroFields fields = reader.getAcroFields();
AcroFields wrt = stamper.getAcroFields();
Set<String> fldNames = fields.getFields().keySet();
for (String fldName : fldNames) {
wrt.setField(fldName, fldName) ;
}
stamper.close();
reader.close();
}
}
注: これは itext5 でのみ機能します。何らかの理由でこれを itext7 でやろうとしたときにうまくいかなかったので、itext5 でやろうとしたところうまくいきました!