Concatenar 2 pdfs em um só

Bom dia, alguém tem algum exemplo de concatenção de 2 pdfs ou mais em um único pdf em java? Estou com dificuldades em fazer isto e não encontrei nenhum exemplo quemostrasse isso…

[]s

Segue o códgio abaixo só que está dando um erro no método concatPDFs, e não sei o que é. Estou usando o eclipse 3.1

adicionei ao projeto o jar itext 1[1].3, alguem poderia me ajudar??

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import com.lowagie.*;
import com.lowagie.text.Document;
import com.lowagie.text.List;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfWriter;
import com.lowagie.text.pdf.hyphenation.TernaryTree.Iterator;

public class MergePDF
{
public static void main(String[] args)
{
try
{
List pdfs = new ArrayList();
pdfs.add(new FileInputStream(“c:\pdf\2.pdf”));
pdfs.add(new FileInputStream(“c:\pdf\3.pdf”));
OutputStream output = new FileOutputStream(“c:\pdf\merge.pdf”);

boolean x = true;
MergePDF.concatPDFs(pdfs, output, x);
}
catch (Exception e)
{
e.printStackTrace();
}

public static void concatPDFs( List streamOfPDFFiles , OutputStream outputStream , boolean paginate)
{
Document document = new Document();
try
{
List pdfs = streamOfPDFFiles;
List readers = new ArrayList();
int totalPages = 0;
Iterator iteratorPDFs = pdfs.iterator();

//Create Leitores de pdfs.
while (iteratorPDFs.hasNext())
{
InputStream pdf = iteratorPDFs.next();
PdfReader pdfReader = new PdfReader(pdf);
readers.add(pdfReader);
totalPages += pdfReader.getNumberOfPages();
}

// Cria um escritor para o 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
PdfContentByte cb = writer.getDirectContent ();

// data / / Dados
PdfImportedPage page;
int currentPageNumber = 0;
int pageOfCurrentReaderPDF = 0;
Iterator iteratorPDFReader = readers.iterator();

// Loop através dos ficheiros PDF e adicionar à saída.
while (iteratorPDFReader.hasNext())
{
PdfReader pdfReader = iteratorPDFReader.next();
// Cria uma nova página da meta para cada fonte página.
while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages())
{
document.newPage();
pageOfCurrentReaderPDF++;
currentPageNumber++;
page = writer.getImportedPage(pdfReader, pageOfCurrentReaderPDF);
cb.addTemplate(page, 0, 0);
//Código para a paginação.
if (paginate)
{
cb.beginText();
cb.setFontAndSize(bf, 9);
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();         
	 }       
	 }    
    }  

}//fim do método
}//fim da classe

Bom , na verdade faltava fechar o método principal com }.
Mas em todas as linhas que contem List ou Iterator ou List dá erro, por exemplo em um aparece a mensagem:

  • the type list is not generic; it cannot be parameterized with arguments

O que poderia ser isso? Versão do java? ou Algum jar?

Bom pessoal , segue um código que funciona…ele mescla vários pds em um único…

import java.io.FileOutputStream;
import java.io.IOException;

import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.PdfCopyFields;
import com.lowagie.text.pdf.PdfReader;

public class MesclaPDF
{
public static void main(String[] args)
{
try
{
PdfReader reader1 = new PdfReader (“C:/1.pdf”);
PdfReader reader2 = new PdfReader(“C:/2.pdf”);
PdfReader reader3 = new PdfReader(“C:/3.pdf”);
PdfCopyFields copy;
copy = new PdfCopyFields(new FileOutputStream(“C:/concatenatedPDF.pdf”));

 copy.addDocument(reader1); 
 copy.addDocument(reader2); 
 copy.addDocument(reader3);
 copy.close(); 
} 
catch (IOException eio) 
{
 eio.printStackTrace();
} 
catch (DocumentException ed)
{
 ed.printStackTrace();
}

}
}