更新答:
你正在使用XFA (XML Forms Architecture)
內置的PDF文件。
iText僅支持XFA,但支持AcroForms。
您需要鋪平XFA表格,然後根據需要使用。
你可以參考各種討論關於在處理XFA表單:
- dynamic XFA forms; forms created with Adobe LiveCycle Designer
- How do you flatten a dynamic XFA form?
- iText Demo: Dynamic XFA forms in PDF
-
演示:XFA至PDF(布魯諾Lowagie的網上公告)
- XfaMovie Java example
- XFA to PDF: articles/examples on itextpdf.com
而且可能會更...
的XfaMovie
例子會更有助於解決您的要求。
原來的答案:
您可以使用byte[]
或InputStream
形式的所有動態的PDF文件的構建相關PdfReader
對象,並結合他們產生一個單一的PDF文件。
在此示例中,我使用的是FileInputStream
實例,但您可以從動態PDF內容生成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
你嘗試過什麼?請包括一些代碼,顯示您嘗試做什麼,以及爲什麼它不起作用。 – 2012-07-12 15:46:08