es.uniovi.asw.personalletter.PDFTextWritter.java Source code

Java tutorial

Introduction

Here is the source code for es.uniovi.asw.personalletter.PDFTextWritter.java

Source

package es.uniovi.asw.personalletter;

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;
import es.uniovi.asw.util.exception.CitizenException;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

/**
 * Escritor de cartas PDF
 */
class PDFTextWritter implements TextWritter {

    private static String FILE_PATH = "src/test/resources/";
    private static Font catFont = new Font(Font.TIMES_ROMAN, 18, Font.BOLD);

    /*private static Font redFont = new Font(Font.TIMES_ROMAN, 12, Font.NORMAL);
    private static Font subFont = new Font(Font.TIMES_ROMAN, 16, Font.BOLD);
    private static Font smallBold = new Font(Font.TIMES_ROMAN, 12, Font.BOLD);
    */
    @Override
    public void createDocument(String documentName, String content) throws CitizenException {
        String realPath = FILE_PATH + documentName + ".pdf";
        Document doc = new Document();
        try {
            PdfWriter.getInstance(doc, new FileOutputStream(realPath));
            doc.open();
            addMetaData(doc);
            addTitlePage(doc);
            addContent(doc, content);
        } catch (DocumentException | FileNotFoundException e) {
            throw new CitizenException("Error al generar documento pdf" + " [" + FILE_PATH + documentName
                    + ".pdf] | [" + this.getClass().getName() + "]");
        } finally {
            if (doc != null) {
                doc.close();
            }
        }

    }

    /**
     * Metadata del documento.
     * @param document Documento en cuestin
     */
    private void addMetaData(Document document) {
        document.addTitle("My first PDF");
        document.addSubject("Using iText");
        document.addKeywords("Java, PDF, iText");
        document.addAuthor("Lars Vogel");
        document.addCreator("Lars Vogel");
    }

    /**
     * Ttulo del documento.
     * @param document Documento en cuestin
     * @throws DocumentException Excepcion generada por algn problema
     */
    private void addTitlePage(Document document) throws DocumentException {
        Paragraph preface = new Paragraph();
        addEmptyLine(preface, 1);
        preface.add(new Paragraph("CitizensLoader PDF", catFont));

        //      addEmptyLine(preface, 1);
        //      // Will create: Report generated by: _name, _date
        //      preface.add(new Paragraph("Report generated by: " + System.getProperty("user.name") + ", " + new Date(), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
        //            smallBold));
        //      addEmptyLine(preface, 3);
        //      preface.add(new Paragraph("This document describes something which is very important ", smallBold));
        //
        //      addEmptyLine(preface, 8);
        //
        //      preface.add(new Paragraph(
        //            "This document is a preliminary version and not subject to your license agreement or any other agreement with vogella.com ;-).",
        //            redFont));
        //
        //      document.add(preface);
        //      // Start a new page
        //      document.newPage();
        document.add(preface);
        addEmptyLine(preface, 2);
    }

    private void addContent(Document document, String content) throws DocumentException {
        //      Anchor anchor = new Anchor("First Chapter", catFont);
        //      anchor.setName("First Chapter");

        //      // Second parameter is the number of the chapter
        //      Chapter catPart = new Chapter(new Paragraph(anchor), 1);
        //
        //      Paragraph subPara = new Paragraph("Subcategory 1", subFont);
        //      Section subCatPart = catPart.addSection(subPara);
        //      subCatPart.add(new Paragraph("Hello"));
        //
        //      subPara = new Paragraph("Subcategory 2", subFont);
        //      subCatPart = catPart.addSection(subPara);
        //      subCatPart.add(new Paragraph("Paragraph 1"));
        //      subCatPart.add(new Paragraph("Paragraph 2"));
        //      subCatPart.add(new Paragraph("Paragraph 3"));
        /*
        // add a list
        createList(subCatPart);
        Paragraph paragraph = new Paragraph();
        addEmptyLine(paragraph, 5);
        subCatPart.add(paragraph);
            
        // add a table
        createTable(subCatPart);
            
        // now add all this to the document
        document.add(catPart);
            
        // Next section
        anchor = new Anchor("Second Chapter", catFont);
        anchor.setName("Second Chapter");
            
        // Second parameter is the number of the chapter
        catPart = new Chapter(new Paragraph(anchor), 1);
            
        subPara = new Paragraph("Subcategory", subFont);
        subCatPart = catPart.addSection(subPara);
        subCatPart.add(new Paragraph("This is a very important message"));
        */
        // now add all this to the document
        Paragraph paragraph = new Paragraph(content);

        document.add(paragraph);

    }
    /*
    private void createTable(Section subCatPart) throws BadElementException {
       PdfPTable table = new PdfPTable(3);
        
       // t.setBorderColor(BaseColor.GRAY);
       // t.setPadding(4);
       // t.setSpacing(4);
       // t.setBorderWidth(1);
        
       PdfPCell c1 = new PdfPCell(new Phrase("Table Header 1"));
       c1.setHorizontalAlignment(Element.ALIGN_CENTER);
       table.addCell(c1);
        
       c1 = new PdfPCell(new Phrase("Table Header 2"));
       c1.setHorizontalAlignment(Element.ALIGN_CENTER);
       table.addCell(c1);
        
       c1 = new PdfPCell(new Phrase("Table Header 3"));
       c1.setHorizontalAlignment(Element.ALIGN_CENTER);
       table.addCell(c1);
       table.setHeaderRows(1);
        
       table.addCell("1.0");
       table.addCell("1.1");
       table.addCell("1.2");
       table.addCell("2.1");
       table.addCell("2.2");
       table.addCell("2.3");
        
       subCatPart.add(table);
        
    }
        
    private void createList(Section subCatPart) {
       List list = new List(true, false, 10);
       list.add(new ListItem("First point"));
       list.add(new ListItem("Second point"));
       list.add(new ListItem("Third point"));
       subCatPart.add(list);
    }
    */

    private void addEmptyLine(Paragraph paragraph, int number) {
        for (int i = 0; i < number; i++) {
            paragraph.add(new Paragraph(" "));
        }
    }

}