Considering choice2.pdf is XFA based PDF, how can I merge it with other non-XFA based PDF?
-----Original Message----- From: "Shahzad Amjad Khan" <[email protected]> Sent: Thursday, 6 January, 2011 17:46 To: [email protected] Subject: Merging Problem I am using iText 2.1.7 with JDK 1.4 to merge 2 PDF files. Below is the code I used to merge the files. In the merged PDF (test.pdf), i don't see the contents of the 1st PDF (choice2.pdf). Instead I see the "To view the full contents of this document, you need a later version of the PDF viewer. You can upgrade.....". Why can't I see the contents of choice2.pdf in the merged test.pdf?? public static void main(String[] args) { String fileOne = "AcroForm.pdf"; String fileOne1 = "choice2.pdf"; String mergedFileLocation = test.pdf"; String filesTobeMerges[] = new String[] {fileOne, fileOne1 }; mergeMyFiles(filesTobeMerges, mergedFileLocation); } public static void mergeMyFiles(String filesToBeMerged[], String mergedFileLocation) { System.out.println("Starting To Merge Files..."); System.out.println("Total Number Of Files To Be Merged..."+filesToBeMerged.length+"\n"); try { int pageOffset = 0; ArrayList masterBookMarkList = new ArrayList(); int fileIndex = 0; String outFile = mergedFileLocation; Document document = null; PdfCopy writer = null; PdfReader reader = null; for (fileIndex = 0; fileIndex < filesToBeMerged.length; fileIndex++) { /** * Create a reader for the file that we are reading */ reader = new PdfReader(filesToBeMerged[fileIndex]); System.out.println("Reading File -"+filesToBeMerged[fileIndex]); /** * Replace all the local named links with the actual destinations. */ reader.consolidateNamedDestinations(); /** * Retrieve the total number of pages for this document */ int totalPages = reader.getNumberOfPages(); /** * Get the list of bookmarks for the current document * If the bookmarks are not empty, store the bookmarks * into a master list */ System.out.println("Checking for bookmarks..."); List bookmarks = SimpleBookmark.getBookmark(reader); if (bookmarks != null) { if (pageOffset != 0) SimpleBookmark.shiftPageNumbers(bookmarks, pageOffset, null); masterBookMarkList.addAll(bookmarks); System.out.println("Bookmarks found and storing..."); }else { System.out.println("No bookmarks in this file..."); } pageOffset += totalPages; /** * Merging the files to the first file. * If we are passing file1, file2 and file3, * we will merge file2 and file3 to file1. */ if (fileIndex == 0) { /** * Create the document object from the reader */ document = new Document(reader.getPageSizeWithRotation(1)); /** * Create a pdf write that listens to this document. * Any changes to this document will be written the file * * outFile is a location where the final merged document * will be written to. */ System.out.println("Creating an empty PDF..."); writer = new PdfCopy(document, new FileOutputStream(outFile)); /** * Open this document */ document.open(); } /** * Add the conent of the file into this document (writer). * Loop through multiple Pages */ System.out.println("Merging File: "+filesToBeMerged[fileIndex]); PdfImportedPage page; for (int currentPage = 1; currentPage <= totalPages; currentPage++) { page = writer.getImportedPage(reader, currentPage); //page.getPdfDocument().set writer.addPage(page); } /** * This will get the documents acroform. * This will return null if no acroform is part of the document. * * Acroforms are PDFs that have been turned into fillable forms. */ System.out.println("Checking for Acroforms"); PRAcroForm form = reader.getAcroForm(); if (form != null) { writer.copyAcroForm(reader); writer.addJavaScript(reader.getJavaScript()); System.out.println("Acroforms found and copied"); System.out.println("javascript:" + reader.getJavaScript()); }else System.out.println("Acroforms not found for this file"); System.out.println(); } /** * After looping through all the files, add the master bookmarklist. * If individual PDF documents had separate bookmarks, master bookmark * list will contain a combination of all those bookmarks in the * merged document. */ if (!masterBookMarkList.isEmpty()) { writer.setOutlines(masterBookMarkList); System.out.println("All bookmarks combined and added"); }else { System.out.println("No bookmarks to add in the new file"); } /** * Finally Close the main document, which will trigger the pdfcopy * to write back to the filesystem. */ document.close(); System.out.println("File has been merged and written to-"+mergedFileLocation); } catch (Exception e) { e.printStackTrace(); } } ------------------------------------------------------------------------------ Gaining the trust of online customers is vital for the success of any company that requires sensitive data to be transmitted over the Web. Learn how to best implement a security strategy that keeps consumers' information secure and instills the confidence they need to proceed with transactions. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ iText-questions mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/itext-questions Many questions posted to this list can (and will) be answered with a reference to the iText book: http://www.itextpdf.com/book/ Please check the keywords list before you ask for examples: http://itextpdf.com/themes/keywords.php
