Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How set page size to European A4 in itext

Tags:

java

itext

I am using the following code to merge pdf. But it is giving me a margin problem. It is leaving more margin on top, left & bottom & less margin in right then the original document. i tried to set margins also but it did not work. please help me out with this or can u help me set page size to European A4

 public class Pdf_Merge {
  public static void main(String[] args) {
    try {
      List<InputStream> pdfs = new ArrayList<InputStream>();
      pdfs.add(new FileInputStream("file1.pdf"));
      pdfs.add(new FileInputStream("file2.pdf"));
      OutputStream output = new FileOutputStream("Output_file.pdf");
      System.out.println("Created");
      Pdf_Merge.concatPDFs(pdfs, output, true);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public static void concatPDFs(List<InputStream> streamOfPDFFiles, OutputStream    
  outputStream, boolean paginate) {

    Document document = new Document(PageSize.A4);
    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();

      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.newPage();
          pageOfCurrentReaderPDF++;
          currentPageNumber++;
          page = writer.getImportedPage(pdfReader, pageOfCurrentReaderPDF);
          cb.addTemplate(page, 0, 0);

       // Code for pagination.
          if (paginate) {
          cb.beginText();
          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();
      }
    }
  }
}
like image 628
Mehul Avatar asked Jul 25 '11 12:07

Mehul


1 Answers

import com.lowagie.text.PageSize;

...    

final Document document = new Document(PageSize.A4);
like image 79
Luixv Avatar answered Sep 22 '22 05:09

Luixv