pdf.merge.application.BLL.PDFWriter.java Source code

Java tutorial

Introduction

Here is the source code for pdf.merge.application.BLL.PDFWriter.java

Source

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