Through this code one can merge any number f pdf files to single pdf file. Also it can convert string of any size to pdf.
/*
For running this code we need iText.jar which is free and can be downloaded from internet.
*/
public boolean simpleTxtToPDF(String text){
//text String can be of any size
File targetFolder = new File("C:/pdfFolder1"); // destination folder in which pdf file will be created
String newPdfFileName = "newPpdfFile.pdf"; // final generated pdf file
try{
Document document = new Document(PageSize.A4, 36, 72, 108, 180); // creating empty pdf document
PdfWriter.getInstance(document,new FileOutputStream(targetFolder+"/"+newPdfFileName));
document.open(); // opening the document
document.add(new Paragraph(text)); // adding text
document.close(); // clsing the document
}
catch(Exception e){
// print the stack trace to console
e.printStackTrace();
}
}
public File mergePdfs(File pdfFolder, ArrayList inputPdfFilesName, String outputPdfFile){
/* where
* pdfFolder = its an local folder which contains pdf files to be merged(i.e C:/pdfFolder)
* inputPdfFilesName = this is an array list which contains names of all the files(like file1.pdf, file2.pdf etc) and these files must exist in pdfFolder
* outputPdfFile = this is an output file name i.e outputPdfFile.pdf
*/
File outPutFile = null;
try{
int pageOffset = 0;
ArrayList master = new ArrayList();
int f = 0;
Document document = null;
PdfCopy writer = null;
int filesCount = inputPdfFilesName.size();
while (f < filesCount) {
PdfReader reader = new PdfReader(pdfFolder+"\\"+inputPdfFilesName.get(f));
reader.consolidateNamedDestinations();
int n = reader.getNumberOfPages();
List bookmarks = SimpleBookmark.
getBookmark(reader);
if (bookmarks != null) {
if (pageOffset != 0)
SimpleBookmark.shiftPageNumbers(bookmarks, pageOffset, null);
master.addAll(bookmarks);
}
pageOffset += n;
if (f == 0) {
document = new Document(reader.getPageSizeWithRotation(1));
writer = new PdfCopy(document, new FileOutputStream(pdfFolder + "\\" + outputPdfFile)); document.open();
}
PdfImportedPage page;
for (int i = 0; i < n; ) {
++i;
page = writer.getImportedPage(reader, i);
writer.addPage(page);
}
PRAcroForm form = reader.getAcroForm();
if (form != null)
writer.copyAcroForm(reader);
f++;
}
if (!master.isEmpty())
writer.setOutlines(master);
document.close();
}
catch(Exception e)
{
e.printStackTrace();
}
outPutFile = new File(pdfFolder + "\\" + outputPdfFile);
return outPutFile;
}