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
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:
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();
}
}
}