更新された回答:
あなたが持っているPDFファイルは、XFA (XML Forms Architecture)
.
iText は XFA を部分的にしかサポートしていませんが、AcroForms は完全にサポートしています。
XFA フォームをフラット化し、必要に応じて使用する必要があります。
次の場所で、XFA フォームの処理に関するさまざまな議論を参照できます。
- 動的 XFA フォーム。Adobe LiveCycle Designer で作成されたフォーム
- 動的 XFA フォームをどのようにフラット化しますか?
- iText デモ: PDF の動的 XFA フォーム
デモ: XFA to PDF (Bruno Lowagie のオンライン ガゼット)
- XfaMovie Java の例
- XFA から PDF: itextpdf.com の記事/例
そしてもっとかもしれません...
このXfaMovie
例は、要件を解決するのにより役立ちます。
元の回答:
すべての動的 PDF ファイルのフォームを使用して、関連するオブジェクトを構築byte[]
し、それらを組み合わせて 1 つの PDF ファイルを生成できます。 InputStream
PdfReader
この例ではインスタンスを使用していますが、動的 PDF コンテンツからインスタンスFileInputStream
を生成して使用できます。ByteArrayInputStream
例:
import com.itextpdf.text.pdf.PdfCopyFields;
import com.itextpdf.text.pdf.PdfReader;
//import com.lowagie.text.pdf.PdfCopyFields;
//import com.lowagie.text.pdf.PdfReader;
public class CombineDynamicPdfContents
{
// throws FileNotFoundException, IOException, DocumentException
public static void main( String ... a ) throws Exception
{
String fileHome = System.getProperty( "user.home" ) + "/Desktop/";
System.out.println( "Start combine PDF files" );
FileInputStream fis1 = new FileInputStream( fileHome + "pdf-file-1.pdf" );
FileInputStream fis2 = new FileInputStream( fileHome + "pdf-file-2.pdf" );
// now create pdfreaders using inputstreams of pdf contents
PdfReader file1 = new PdfReader( fis1 );
PdfReader file2 = new PdfReader( fis2 );
FileOutputStream fos = new FileOutputStream( fileHome + "Pdf-Combined.pdf" );
PdfCopyFields copy = new PdfCopyFields( fos );
copy.addDocument( file1 );
copy.addDocument( file2 );
copy.close();
System.out.println( "Done ..." );
} // psvm( .. )
} // class CombineDynamicPdfContents