PDFMergerUtility ut = new PDFMergerUtility();
ut.addSource(...);
ut.addSource(...);
ut.addSource(...);
ut.setDestinationFileName(...);
ut.mergeDocuments();
También funciona, pero también estaba usando PDFBox para crear PDF.
– Lipis
02 feb.
¿Permitirá fusionar un PDF que tiene imágenes escaneadas y un PDF que fue escrito?
– Ragesh Kr
03 mar.
@RageshKr: según tengo entendido, fusionará cualquier PDF independientemente de su contenido.
– queruvim
03 mar. 15 a las 13:48
¿Hay alguna forma de mencionar el número de página en cada página para el pdf resultante?
– Prateek Singh
31 ago. 17 a las 5:24
¿Se puede usar si los archivos pdf tienen contraseñas?
import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;
/**
* This class is used to merge two or more
* existing pdf file using iText jar.
*/
public class PDFMerger {
static void mergePdfFiles(List<InputStream> inputPdfList,
OutputStream outputStream) throws Exception{
//Create document and pdfReader objects.
Document document = new Document();
List<PdfReader> readers =
new ArrayList<PdfReader>();
int totalPages = 0;
//Create pdf Iterator object using inputPdfList.
Iterator<InputStream> pdfIterator =
inputPdfList.iterator();
// Create reader list for the input pdf files.
while (pdfIterator.hasNext()) {
InputStream pdf = pdfIterator.next();
PdfReader pdfReader = new PdfReader(pdf);
readers.add(pdfReader);
totalPages = totalPages + pdfReader.getNumberOfPages();
}
// Create writer for the outputStream
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
//Open document.
document.open();
//Contain the pdf data.
PdfContentByte pageContentByte = writer.getDirectContent();
PdfImportedPage pdfImportedPage;
int currentPdfReaderPage = 1;
Iterator<PdfReader> iteratorPDFReader = readers.iterator();
// Iterate and process the reader list.
while (iteratorPDFReader.hasNext()) {
PdfReader pdfReader = iteratorPDFReader.next();
//Create page and add content.
while (currentPdfReaderPage <= pdfReader.getNumberOfPages()) {
document.newPage();
pdfImportedPage = writer.getImportedPage(
pdfReader,currentPdfReaderPage);
pageContentByte.addTemplate(pdfImportedPage, 0, 0);
currentPdfReaderPage++;
}
currentPdfReaderPage = 1;
}
//Close document and outputStream.
outputStream.flush();
document.close();
outputStream.close();
System.out.println("Pdf files merged successfully.");
}
public static void main(String args[]){
try {
//Prepare input pdf file list as list of input stream.
List<InputStream> inputPdfList = new ArrayList<InputStream>();
inputPdfList.add(new FileInputStream("..\pdf\pdf_1.pdf"));
inputPdfList.add(new FileInputStream("..\pdf\pdf_2.pdf"));
inputPdfList.add(new FileInputStream("..\pdf\pdf_3.pdf"));
inputPdfList.add(new FileInputStream("..\pdf\pdf_4.pdf"));
//Prepare output stream for merged pdf file.
OutputStream outputStream =
new FileOutputStream("..\pdf\MergeFile_1234.pdf");
//call method to merge pdf files.
mergePdfFiles(inputPdfList, outputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
}
La pregunta claramente está etiquetada como pdfbox. Presentas una solución para itext. Por lo tanto, su respuesta está fuera de tema. (Dicho esto, su solución de iText también es mala y los desarrolladores de iText generalmente la desaconsejan, ya que descarta funciones interactivas e ignora la rotación y el tamaño de las páginas).
– mkl
09 ene.
Entonces el título debería ser “Cómo fusionar dos archivos PDF en uno en Java con PdfBox”
– Lluís Martínez
11 dic. 17 en 11:35
Además, iText viene con una licencia desagradable.
– Daniel Bo
16 ene.
Este ejemplo se llama IncorrectExample porque no es así como normalmente resolvería el problema de rotar páginas, ni de fusionar documentos. La forma correcta NO es usar Document / PdfWriter, sino usar PdfStamper, PdfCopy o PdfSmartCopy. Sin embargo: en la pregunta mencionada anteriormente, las circunstancias son muy particulares y usar este ejemplo en esas circunstancias está justificado: developers.itextpdf.com/examples/merging-pdf-documents-itext5/…
– victorpacheco3107
16 mar. 18 en 16:23
Múltiples métodos combinados de pdf usando org.apache.pdfbox:
Después de llamar fusionar archivos PDF, cargar archivo fusionado
File mergedFile = new File(mergedFileName);
package article14;
import java.io.File;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.util.PDFMergerUtility;
public class Pdf
{
public static void main(String args[])
{
new Pdf().createNew();
new Pdf().combine();
}
public void combine()
{
try
{
PDFMergerUtility mergePdf = new PDFMergerUtility();
String folder ="pdf";
File _folder = new File(folder);
File[] filesInFolder;
filesInFolder = _folder.listFiles();
for (File string : filesInFolder)
{
mergePdf.addSource(string);
}
mergePdf.setDestinationFileName("Combined.pdf");
mergePdf.mergeDocuments();
}
catch(Exception e)
{
}
}
public void createNew()
{
PDDocument document = null;
try
{
String filename="test.pdf";
document=new PDDocument();
PDPage blankPage = new PDPage();
document.addPage( blankPage );
document.save( filename );
}
catch(Exception e)
{
}
}
}
Tragar excepciones es un mal patrón. catch(Excepción e){ }
– Lluís Martínez
11 dic. 17 a las 11:40
david w
Si desea combinar dos archivos donde uno se superpone al otro (ejemplo: el documento A es una plantilla y el documento B tiene el texto que desea colocar en la plantilla), esto funciona:
después de crear “doc”, desea escribir su plantilla (templateFile) encima de eso:
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
Alguien señaló iText [java-x.blogspot.com/2006/11/merge-pdf-files-with-itext.html] y luego borró la respuesta. Funcionó y gracias por eso.
– Lipis
27 ago. 2010 a las 15:20
El Enlace podría ayudar a alguien que busca una respuesta.
– java_learner
27 sep.