Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package pdf.merge.application.BLL; import java.io.File; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.PDPageTree; import org.apache.pdfbox.pdmodel.font.PDFont; import org.apache.pdfbox.pdmodel.font.PDType1Font; /** * * @author Quentin */ public class PDFWriter { private PDDocument document = null; private PDPageTree allPages = null; private PDPage page = null; private final PDFont font = PDType1Font.TIMES_ROMAN; private final float fontSize = 15.0f; private PDPageContentStream contentStream = null; public PDFWriter(File file, String filePath, Boolean headerActivated, Boolean footerActivated, String headerContent, String footerContent) { try { // rcupration du fichier modifier document = PDDocument.load(file); // rcupration de l'ensemble des pages du PDF gnr en amont allPages = document.getDocumentCatalog().getPages(); // on boucle sur le nombre de pages du PDF for (int i = 0; i < allPages.getCount(); i++) { // on rcupre la premire page page = (PDPage) allPages.get(i); contentStream = new PDPageContentStream(document, page, true, true, true); // dbut de l'criture contentStream.beginText(); contentStream.setFont(font, fontSize); // si le header doit tre crit, ou le footer ou les deux if (headerActivated && footerActivated) { // on se positionne sur le PDF contentStream.moveTextPositionByAmount(5, 580); // on crit sur le contenu enregistr pour le header contentStream.drawString(headerContent); contentStream.moveTextPositionByAmount(5, -550); contentStream.drawString(footerContent); } else if (headerActivated) { contentStream.moveTextPositionByAmount(5, 580); contentStream.drawString(headerContent); } else { contentStream.moveTextPositionByAmount(5, -550); contentStream.drawString(footerContent); } // fin du processus d'criture + fermeture contentStream.endText(); contentStream.close(); } // on crase le fichier enregistr prcdemment document.save(filePath); } catch (IOException e) { System.out.println("Erreur : " + e.getMessage()); } } }