Accessor.MyPdfWriter.java Source code

Java tutorial

Introduction

Here is the source code for Accessor.MyPdfWriter.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 Accessor;

import com.itextpdf.io.font.PdfEncodings;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfName;
import static com.itextpdf.kernel.pdf.PdfName.BaseFont;
import static com.itextpdf.kernel.pdf.PdfName.Font;
import static com.itextpdf.kernel.pdf.PdfName.FontFamily;
import com.itextpdf.kernel.pdf.PdfWriter;
import static com.itextpdf.kernel.xmp.PdfConst.Title;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.property.TextAlignment;
import java.io.File;
import java.io.FileOutputStream;
import java.util.List;
import java.io.PrintStream;
import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Arrays;
import java.util.logging.Logger;

import org.apache.commons.lang3.ClassUtils;
import quizwizard.NewStudent;
import quizwizard.NewStudentWizBean;

/**
 *
 * @author Sefano
 */
//@TODO il pdfWriter prende in input le opzioni
//      poi in base alle opzioni, capisce che file deve scrivere
//      e richiede un corretto oggetto per produrre il pdf
//      Non server un orrendo row adapter
public class MyPdfWriter<T> {

    private static final Logger LOGGER = Logger.getLogger(CsvAccessor.class.getName());
    //final static String FONT = "./src/test/resources/font/FreeSans.ttf";

    static <T extends Object & Serializable> void write(PdfAccessor pdfAccessor, T element) {
        try {
            String DEST = pdfAccessor.getPath();
            LOGGER.info("Writing pdf to: " + DEST);
            File file = new File(DEST);
            file.getParentFile().mkdirs();

            if (element.getClass().equals(NewStudent.class)) {

                //PdfFont textFont = PdfFontFactory.createFont(FONT, PdfEncodings.IDENTITY_H, true);
                NewStudent student = (NewStudent) element;
                //Initialize PDF writer
                PdfWriter writer = new PdfWriter(DEST);
                //Initialize PDF document
                PdfDocument pdf = new PdfDocument(writer);
                // Initialize document
                Document document = new Document(pdf);
                //Add paragraph to the document

                //Creating header
                document.add(new Paragraph("Anno scolastico: " + NewStudentWizBean.getSchoolYear())
                        .setTextAlignment(TextAlignment.CENTER));
                document.add(new Paragraph("SCHEDA D'ISCRIZIONE").setBold().setFontSize(18)
                        .setTextAlignment(TextAlignment.CENTER));

                //Creating Body pt 1
                document.add(new Paragraph("\nDati Personali").setBold());
                document.add(new Paragraph(student.toDatiPersonali()));
                document.add(new Paragraph("\nContatti").setBold());
                document.add(new Paragraph(student.toContatti()));

                //Creating Body pt 2
                document.add(new Paragraph("Ambito di interesse").setBold());
                document.add(new Paragraph("Corso di italiano"
                        + "\n [    ] 10.00 - 11.30       [    ] 18.00 - 19.30       [    ] 19.30  21.00"
                        + "\nCorso di informatica     [    ]" + "\nCertificazione A2     [    ]"));

                //Creating Tail
                document.add(new Paragraph("\n\nFirma studente: _______________________")
                        .setTextAlignment(TextAlignment.RIGHT));
                document.add(new Paragraph(
                        "Il sottoscritto autorizza al trattamento dei dati personali, secondo quanto previsto dal Decreto legislativo 30 giugno 2003, n. 196.")
                                .setTextAlignment(TextAlignment.RIGHT).setFontSize(9).setItalic());
                document.add(new Paragraph(student.toInfo()).setTextAlignment(TextAlignment.RIGHT));
                document.add(new Paragraph("\n\nTest d'ingresso:").setBold());
                document.add(new Paragraph("Esito: _______________________"));
                document.add(new Paragraph("Data: _______________________"));

                //Close document
                document.close();
            } else {
                LOGGER.info("Unsupported element class : " + element.getClass());
            }

        } catch (Exception e) {
            LOGGER.info("Exception writing pdf : " + e.getMessage());
        }

    }

}