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