iText を介して、これは機能しますが、フィールド名の競合を避けるために、フォームをマージする前にフォームを平坦化する必要があります。それか、一度に 1 ページずつフィールドの名前を変更します。
PDF 内では、同じ名前のフィールドは値を共有します。これは通常、望ましい動作ではありませんが、便利な場合もあります。
(Javaで)の行に沿ったもの:
PdfCopy mergedPDF = new PdfCopy( new Document(), new FileOutputStream( outPath );
for (String path : paths ) {
PdfReader reader = new PdfReader( path );
ByteArrayOutputStream curFormOut = new ByteArrayOutputStream();
PdfStamper stamper = new PdfStamper( reader, curFormOut );
stamper.setField( name, value ); // ad nauseum
stamper.setFlattening(true); // flattening setting only takes effect during close()
stamper.close();
byte curFormBytes = curFormOut.toByteArray();
PdfReader combineMe = new PdfReader( curFormBytes );
int pages = combineMe .getNumberOfPages();
for (int i = 1; i <= pages; ++i) { // "1" is the first page
mergedForms.addPage( mergedForms.getImportedPage( combineMe, i );
}
}
mergedForms.close();