Le pdf est l'un des formats de fichier les plus répandus à l'heure actuelle. En effet, il permet de transmettre des documents en étant sûr :
  • qu'ils seront lisibles à l'arrivée (il existe des lecteurs pdf pour la quasi totalité des plateformes existantes à l'heure actuelle)
  • que le formatage sera conservé (pas de problème de mise en page, de polices manquantes,...).%%%

Nous pouvons donc être amenés à générer ou manipuler des fichiers au format pdf au sein de nos applications, et notamment à rassembler plusieurs fichiers pdf en un seul, pour en faciliter l'impression ou l'envoi par e-mail.

Pour cela, nous utilisons la librairie iText, qui est l'une des plus répandues pour la génération et la manipulation de fichiers pdf en Java.

Par exemple, fusionner deux documents nommés "fichierEntree1.pdf" et "fichierEntree2.pdf", et les sauvegarder dans un fichier nommé "fichierSortie.pdf" est réalisé grâce au code suivant :

Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("fichierSortie.pdf"));
PdfReader pdfr = new PdfReader("fichierEntree1.pdf");
PdfReader pdfr2 = new PdfReader("fichierEntree2.pdf");
document.open();
PdfContentByte cb = writer.getDirectContent();
for (int i=1; i<=pdfr.getNumberOfPages(); i++) {
  document.newPage();
  cb.addTemplate(writer.getImportedPage(pdfr, i),0,0);
}
for (int i=1; i<=pdfr2.getNumberOfPages(); i++) {
  document.newPage();
  cb.addTemplate(writer.getImportedPage(pdfr2, i),0,0);
}
document.close();