com.vigglet.pdf.PdfBase.java Source code

Java tutorial

Introduction

Here is the source code for com.vigglet.pdf.PdfBase.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 com.vigglet.pdf;

import com.vigglet.util.DateUtil;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javafx.util.Pair;
import org.apache.pdfbox.exceptions.COSVisitorException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;

/**
 *
 * @author vikn
 */
public abstract class PdfBase {

    protected PDDocument doc;
    protected PdfPage page;
    protected static List<Pair<String, String>> defaultInformationHeaders = new ArrayList<>(1);

    static {
        defaultInformationHeaders.add(new Pair<>("Skapad", DateUtil.getTodayString()));
    }

    protected abstract String getPageHeader();

    protected abstract List<Pair<String, String>> getInformationHeaders();

    protected void createPdfPage() {
        doc = new PDDocument();
        page = new PdfPage(doc);
    }

    protected List<PDPage> getPages() {
        return page.getPDPages();
    }

    protected void setHeader() throws IOException {
        page.addPageHeader(getPageHeader());
    }

    protected void addInformationHeaders() throws IOException {
        page.addInformationHeaders(defaultInformationHeaders, getInformationHeaders());
    }

    protected void drawTable(String tableHeader, List<String> headers, List<List<String>> rows) throws IOException {
        page.drawTable(tableHeader, headers, rows);
    }

    protected void addTextBox(String title, String textContent) throws IOException {
        page.addTextBox(title, textContent);
    }

    protected void addLogo(FileInputStream fis) throws IOException {
        page.addLogo(fis);
    }

    protected void close() throws IOException {
        page.closeAndSave();
        doc.close();
    }

    protected File closeAndSave() throws IOException, COSVisitorException {
        File result = null;
        page.closeAndSave();

        //        Collections.reverse(page.getPDPages());
        page.addTotalPageNumbers();
        for (PDPage asd : page.getPDPages()) {
            doc.addPage(asd);
        }
        //        page.getPDPages().stream().forEach((PDPage foo) -> {
        //            doc.addPage(foo);
        //        });

        result = File.createTempFile(PdfUtil.PDF_TEMP_PREFIX, PdfUtil.PDF_TEMP_SUFFIX, PdfUtil.PDF_TEMP_DIRECTORY);
        doc.save(result);
        doc.close();

        return result;
    }

}