Because Choice2.pdf is an XFA-based PDF.
-----Original Message-----
From: Shahzad Amjad Khan [mailto:[email protected]]
Sent: Thursday, January 06, 2011 7:46 AM
To: [email protected]
Subject: [iText-questions] 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();
}
}
------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and,
should the need arise, upgrade to a full multi-node Oracle RAC database
without downtime or disruption
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