org.me.modelos.PDFHelper.java Source code

Java tutorial

Introduction

Here is the source code for org.me.modelos.PDFHelper.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 org.me.modelos;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import java.awt.HeadlessException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.SQLException;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.filechooser.FileNameExtensionFilter;
import org.me.excepciones.DataBaseException;
import org.me.paneles.PanelConsultas;
import org.me.util.Message;

/**
 *
 * @author Adrin
 */
public class PDFHelper {

    private String user, pass, servidor, puerto, reporte;

    public PDFHelper(String user, String pass, String servidor, String puerto, String reporte) {
        this.user = user;
        this.pass = pass;
        this.servidor = servidor;
        this.puerto = puerto;
        this.reporte = reporte;
    }

    public PDFHelper() {

    }

    public void tablaToPdf(JTable jTable, File pdfNewFile, String title) {
        try {
            Font subCategoryFont = new Font(Font.FontFamily.HELVETICA, 16, Font.BOLD);
            Document document = new Document(PageSize.LETTER.rotate());
            PdfWriter writer = null;
            try {
                writer = PdfWriter.getInstance(document, new FileOutputStream(pdfNewFile));
            } catch (FileNotFoundException fileNotFoundException) {
                Message.showErrorMessage(fileNotFoundException.getMessage());
            }

            writer.setBoxSize("art", new Rectangle(150, 10, 700, 580));
            writer.setPageEvent(new HeaderFooterPageEvent());
            document.open();
            document.addTitle(title);

            document.addSubject("Reporte");
            document.addKeywords("reportes, gestion, pdf");
            document.addAuthor("Gestion de Proyectos de software");
            document.addCreator("gestion de proyectos");

            Paragraph parrafo = new Paragraph(title, subCategoryFont);

            PdfPTable table = new PdfPTable(jTable.getColumnCount());
            table.setWidthPercentage(100);
            PdfPCell columnHeader;

            for (int column = 0; column < jTable.getColumnCount(); column++) {
                Font font = new Font(Font.FontFamily.HELVETICA);
                font.setColor(255, 255, 255);
                columnHeader = new PdfPCell(new Phrase(jTable.getColumnName(column), font));
                columnHeader.setHorizontalAlignment(Element.ALIGN_LEFT);
                columnHeader.setBackgroundColor(new BaseColor(96, 125, 139));
                table.addCell(columnHeader);
            }
            table.getDefaultCell().setBackgroundColor(new BaseColor(255, 255, 255));
            table.setHeaderRows(1);
            BaseColor verdad = new BaseColor(255, 255, 255);
            BaseColor falso = new BaseColor(214, 230, 244);
            boolean bandera = false;
            for (int row = 0; row < jTable.getRowCount(); row++) {

                for (int column = 0; column < jTable.getColumnCount(); column++) {

                    if (bandera) {
                        table.getDefaultCell().setBackgroundColor(verdad);
                    } else {
                        table.getDefaultCell().setBackgroundColor(falso);
                    }
                    table.addCell(jTable.getValueAt(row, column).toString());
                    bandera = !bandera;
                }

            }

            parrafo.add(table);
            document.add(parrafo);
            document.close();
            //JOptionPane.showMessageDialog(null, "Se ha creado el pdf en " + pdfNewFile.getPath(),
            //        "RESULTADO", JOptionPane.INFORMATION_MESSAGE);
        } catch (DocumentException documentException) {
            System.out.println("Se ha producido un error " + documentException);
            JOptionPane.showMessageDialog(null, "Se ha producido un error" + documentException, "ERROR",
                    JOptionPane.ERROR_MESSAGE);
        }
    }

    public void guardar() {

        JTable resultado;
        try {

            int consulta = 1;
            switch (reporte) {
            case "Reporte de reabastecimiento":
                consulta = 5;
                break;
            case "Reporte de Renta":
                consulta = 6;
                break;
            case "Reporte empleados":
                consulta = 1;
                break;
            }
            resultado = generarTabla(consulta);
            if (resultado.getRowCount() < 1) {
                Message.showErrorMessage("El reporte est vacio");
                return;
            }
        } catch (ClassNotFoundException ex) {
            System.out.println(ex);
            return;

        } catch (DataBaseException | SQLException ex) {
            Message.showErrorMessage(ex.toString());
            return;
        }

        JFileChooser elegir = new JFileChooser();
        File f;
        FileNameExtensionFilter sql = new FileNameExtensionFilter("Archivos PDF", "pdf", "PDF");
        elegir.setFileFilter(sql);
        int seleccionar = elegir.showOpenDialog(null);
        String dir;
        try {
            if (elegir.getSelectedFile().getPath().endsWith("PDF")
                    || elegir.getSelectedFile().getPath().endsWith("pdf")) {
                dir = elegir.getSelectedFile().getPath();
            } else {
                dir = elegir.getSelectedFile().getPath() + ".pdf";
            }
            f = new File(dir);
            if (!f.exists()) {
                f.createNewFile();
            } else {
                int x = JOptionPane.showConfirmDialog(null, "El archivo existe, reemplazar?", "Advertencia",
                        JOptionPane.YES_NO_OPTION);
                if (x == JOptionPane.NO_OPTION) {
                    return;
                }
            }
        } catch (IOException | HeadlessException e) {
            return;
        }
        if (seleccionar == JFileChooser.APPROVE_OPTION) {

            tablaToPdf(resultado, f, reporte);
        } else {
            return;
        }

    }

    private JTable generarTabla(int consulta) throws ClassNotFoundException, DataBaseException, SQLException {
        PanelConsultas panel = new PanelConsultas(user, pass, servidor, puerto, consulta);
        return panel.getTablaResultado();
    }

    public boolean crearPDF() {
        try {
            JTable resultado;
            int consulta = 1;
            switch (reporte) {
            case "Reporte de reabastecimiento":
                consulta = 5;
                break;
            case "Reporte de Renta":
                consulta = 6;
                break;
            case "Reporte empleados":
                consulta = 1;
                break;
            }
            resultado = generarTabla(consulta);
            if (resultado.getRowCount() < 1) {
                Message.showErrorMessage("El reporte est vacio");
                return false;
            }
        } catch (ClassNotFoundException ex) {
            System.out.println(ex);
            return false;
        } catch (DataBaseException | SQLException ex) {
            Message.showErrorMessage(ex.toString());
            return false;
        }
        return true;
    }

    public boolean crearPDF(File f) {
        try {
            JTable resultado;
            int consulta = 1;
            switch (reporte) {
            case "Reporte de reabastecimiento":
                consulta = 5;
                break;
            case "Reporte de Renta":
                consulta = 6;
                break;
            }
            resultado = generarTabla(consulta);
            if (resultado.getRowCount() < 1) {
                Message.showErrorMessage("El reporte est vacio");
                return false;
            } else {
                tablaToPdf(resultado, f, reporte);
                return true;
            }
        } catch (ClassNotFoundException ex) {
            System.out.println(ex);

        } catch (DataBaseException | SQLException ex) {
            Message.showErrorMessage(ex.toString());
        }
        return false;
    }

}