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