IntelliJ Java IDE
The moose likes I/O and Streams and the fly likes Merging two pdfs Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login
JavaRanch » Java Forums » Java » I/O and Streams
Reply Bookmark "Merging two pdfs" Watch "Merging two pdfs" New topic
Author

Merging two pdfs

Palak Agarwal
Greenhorn

Joined: Nov 02, 2011
Posts: 21
hi all,

I am trying to merge two pdfs using java code. the following code merges the required pdf but the second pdf gets zoomed.I am using iText java library for this code.
Does anybody have idea, for this behaviour of code.
Kindly help me with this issue.

public static void concatPDFs(List<InputStream> streamOfPDFFiles,

OutputStream outputStream, boolean paginate) {

Document document = new Document(PageSize.A2);

try {
List<InputStream> pdfs = streamOfPDFFiles;
List<PdfReader> readers = new ArrayList<PdfReader>();
int totalPages = 0;
Iterator<InputStream> iteratorPDFs = pdfs.iterator();

// Create Readers for the pdfs.
while (iteratorPDFs.hasNext()) {
InputStream pdf = iteratorPDFs.next();
PdfReader pdfReader = new PdfReader(pdf);
readers.add(pdfReader);
totalPages += pdfReader.getNumberOfPages();
}
// Create a writer for the outputstream
PdfWriter writer = PdfWriter.getInstance(document, outputStream);

document.open();
BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,
BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
PdfContentByte cb = writer.getDirectContent(); // Holds the PDF
// data

PdfImportedPage page;
int currentPageNumber = 0;
int pageOfCurrentReaderPDF = 0;
Iterator<PdfReader> iteratorPDFReader = readers.iterator();

// Loop through the PDF files and add to the output.
while (iteratorPDFReader.hasNext()) {
PdfReader pdfReader = iteratorPDFReader.next();

// Create a new page in the target for each source page.
while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) {
//document.setPageSize(pdfReader.getPageSizeWithRotation(pageOfCurrentReaderPDF));
document.newPage();
pageOfCurrentReaderPDF++;
currentPageNumber++;
page = writer.getImportedPage(pdfReader,
pageOfCurrentReaderPDF);

cb.addTemplate(page, 0, 0);

// Code for pagination.
if (paginate) {
//cb.rectangle (document.left (), document.bottom (), document.right ()-document.left (),
//document.top ()-document.bottom ());
cb.beginText();
cb.setFontAndSize(bf, 10);
cb.showTextAligned(PdfContentByte.ALIGN_CENTER, ""
+ currentPageNumber + " of " + totalPages, 520,
5, 0);
cb.endText();
}
}
pageOfCurrentReaderPDF = 0;
}
outputStream.flush();
document.close();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (document.isOpen())
document.close();
try {
if (outputStream != null)
outputStream.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}


with regards
palak
 
 
subject: Merging two pdfs
 
Threads others viewed
How to convert simple Java Code into amazon's AMI
Disable PDF access permissions like Save/Save As/Print
Writing large files to the servletoutputstream in chunks
Covert a PDF to PDF/A format using iText
Save edited pdf Page in A4 size using itext
IntelliJ Java IDE