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 Cotizacion; /** * * @author Ana Karen */ import java.awt.Color; import java.io.FileOutputStream; import com.lowagie.text.BadElementException; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.Element; import com.lowagie.text.pdf.PdfPCell; import com.lowagie.text.pdf.PdfWriter; import com.lowagie.text.Image; import com.lowagie.text.pdf.PdfPTable; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import Conexion.Conexion; import com.mysql.jdbc.*; import java.sql.DriverManager; import com.mysql.jdbc.Statement; import java.sql.ResultSet; import java.io.FileOutputStream; public class ExportarPDF { private static Font fuenteNegrita = new Font(Font.TIMES_ROMAN, 16, Font.BOLD, Color.BLACK); private static Font fuenteNegrita2 = new Font(Font.TIMES_ROMAN, 12, Font.BOLD, Color.BLACK); private static Font fuenteNormal = new Font(Font.TIMES_ROMAN, 12, Font.NORMAL, Color.BLACK); private static Font fuenteChiquita = new Font(Font.TIMES_ROMAN, 8, Font.NORMAL, Color.BLACK); public static JFileChooser chooser = new JFileChooser("."); public static int numeroC; public static Statement stm = null; public static String bd = Conexion.nombreBD; public static String login = Conexion.usuarioBD;//"root"; public static String password = Conexion.contrasena;//"280592ssmaylo"; public static String url = "jdbc:mysql://" + Conexion.nombreServidor + ":" + Conexion.puerto + "/" + Conexion.nombreBD; public static String nombrePDF; //variables para el metodo acomodarDatosDerecha public static String telefonoNegocio, numeroCelular, correoNegocio; public static String domicilioNegocio, RFC, leyendaCotizacion; public static String colonia, ciudad; //variables para el metodo acomodarDatosDerecha2 public static String fecha, ubicacion, asunto; //variables para el metodo acomodarDatosNormal public static String nombreCliente, anexo; //variables para el metodo acomodarDatosTablaProductos public static int numeroFilas; public static String cantidadTabla[]; public static String productoTabla[]; public static String precioTabla[]; public static String totalTabla[]; public static String descripcionTabla[]; //variables para el metodo acomodarDatosPreciosTotales public static String subtotal, iva, descuento, total; //variabels para el metodo acomodarDatosEspecificaciones public static String especificacionTrabajo, especificacionDiseno; public static int idCotiza; //variables para el metodo acomodarATTE public static String ate, nombre; //variables para el metodo acomodarNota public static String nota1, leyenda; public static void obtenerNumeroCotizacion() { Connection conexion = null; try { Class.forName("org.gjt.mm.mysql.Driver"); conexion = (Connection) DriverManager.getConnection(url, login, password); stm = (Statement) conexion.createStatement(); ResultSet rs = stm.executeQuery("select max(numero) as numero from todolonas.cotizacion;"); while (rs.next()) { numeroC = rs.getInt("numero"); } conexion.close(); } catch (Exception e) { System.out.println("error obtener max numeroVenta: " + e); } } public static void guardarPDF() { obtenerNumeroCotizacion(); nombrePDF = PanelCotizacion.labelObtenerNombreCliente.getText(); fecha = PanelCotizacion.labelObtenerFecha.getText(); try { Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(numeroC + " " + nombrePDF + " " + fecha + ".pdf")); document.open(); agregarMetaDatos(document); agregarContenido(document); document.close(); JOptionPane.showMessageDialog(null, "Se ha generado el archivo PDF " + nombrePDF, "Atencin:", JOptionPane.WARNING_MESSAGE); System.out.println("Se ha generado el PDF: " + nombrePDF + ".pdf"); } catch (Exception e) { e.printStackTrace(); } } private static void agregarMetaDatos(Document document) { document.addTitle("PDF Cliente"); document.addSubject("Usando iText"); document.addKeywords("Java, PDF, iText"); document.addAuthor("Ana Karen Soto"); document.addCreator("Ana Karen Soto"); } private static void agregarContenido(Document document) throws DocumentException, Exception { Paragraph parrafoNormal1 = new Paragraph(); Paragraph parrafoNormal2 = new Paragraph(); Paragraph parrafoNormal3 = new Paragraph(); Paragraph parrafoNormal4 = new Paragraph(); Paragraph parrafoNormal5 = new Paragraph(); Paragraph parrafoNormal6 = new Paragraph(); Paragraph parrafoNormal7 = new Paragraph(); Paragraph parrafoNormal8 = new Paragraph(); Paragraph parrafoNormal9 = new Paragraph(); Paragraph parrafoNormal10 = new Paragraph(); acomodarImagenCabecera(parrafoNormal1); acomodarImagenLogo(parrafoNormal1); acomodarDatosDerecha(parrafoNormal1); acomodarDatosDerecha2(parrafoNormal2); acomodarDatosNormal(parrafoNormal3); acomodarDatosTablaProductos(parrafoNormal4); acomodarDatosEspecificaciones(parrafoNormal5); acomodarDatosPreciosTotales(parrafoNormal6); acomodarImagenFirma(parrafoNormal7); acomodarATTE(parrafoNormal8); acomodarDatosNota(parrafoNormal9); acomodarImagenPie(parrafoNormal10); document.add(parrafoNormal1); document.add(parrafoNormal2); document.add(parrafoNormal3); document.add(parrafoNormal4); document.add(parrafoNormal5); document.add(parrafoNormal6); document.add(parrafoNormal7); document.add(parrafoNormal8); document.add(parrafoNormal9); document.add(parrafoNormal10); } private static void acomodarImagenCabecera(Paragraph imagen) { try { Image im; im = Image.getInstance("src/Imagenes/arriba.png"); im.setAlignment(Image.ALIGN_CENTER | Image.TEXTWRAP); imagen.add(im); } catch (Exception e) { System.out.print(e.getMessage()); } } private static void acomodarImagenLogo(Paragraph imagen) throws BadElementException { try { Image im = Image.getInstance("src/Imagenes/todo Lonas.png"); im.setAlignment(Image.ALIGN_LEFT | Image.TEXTWRAP); imagen.add(im); } catch (Exception e) { System.out.print(e.getMessage()); } } private static void acomodarDatosDerecha(Paragraph datosDerecha) throws Exception { ciudad = Cotizacion.PanelCotizacion.labelCiudad.getText(); Connection conexion = null; try { Class.forName("org.gjt.mm.mysql.Driver"); conexion = (Connection) DriverManager.getConnection(url, login, password); stm = (Statement) conexion.createStatement(); // System.out.println("nombre++++----> "+nombreCliente); ResultSet rs = stm.executeQuery("SELECT * FROM todolonas.ajustes;"); while (rs.next()) { telefonoNegocio = rs.getString("telefonoNegocio"); numeroCelular = rs.getString("numeroCelular"); correoNegocio = rs.getString("correoNegocio"); domicilioNegocio = rs.getString("domicilioNegocio"); RFC = rs.getString("RFC"); leyendaCotizacion = rs.getString("leyendaCotizacion"); colonia = rs.getString("colonia"); } conexion.close(); } catch (Exception e) { System.out.println("error: " + e); } PdfPTable table = new PdfPTable(2); table.getDefaultCell().setBorder(PdfPCell.NO_BORDER); table.addCell(""); table.addCell(telefonoNegocio); table.addCell(""); table.addCell(numeroCelular); table.addCell(""); table.addCell(correoNegocio); table.addCell(""); table.addCell(domicilioNegocio); table.addCell(""); table.addCell(colonia); table.addCell(""); table.addCell(RFC); table.addCell(""); table.addCell(ciudad); table.setWidthPercentage(100); table.setHorizontalAlignment(Element.ALIGN_RIGHT); datosDerecha.add(table); } private static void acomodarDatosDerecha2(Paragraph datosDerecha2) { fecha = PanelCotizacion.labelObtenerFecha.getText(); ubicacion = PanelCotizacion.cajaAsunto.getText(); asunto = PanelCotizacion.cajaUbicacion.getText(); PdfPTable table2 = new PdfPTable(2); table2.getDefaultCell().setBorder(PdfPCell.NO_BORDER); table2.addCell("Fecha"); table2.addCell(fecha); table2.addCell("Ubicacin"); table2.addCell(ubicacion); table2.addCell("Asunto"); table2.addCell(asunto); table2.setWidthPercentage(50); table2.setHorizontalAlignment(350); table2.setHorizontalAlignment(Element.ALIGN_RIGHT); datosDerecha2.add(table2); } private static void acomodarDatosNormal(Paragraph datosNormal) throws BadElementException { nombreCliente = Cotizacion.PanelCotizacion.labelObtenerNombreCliente.getText(); anexo = Cotizacion.PanelCotizacion.labelAnexo.getText(); datosNormal.add(new Paragraph(nombreCliente, fuenteNegrita)); datosNormal.add(new Paragraph(anexo, fuenteNormal)); agregarLineasEnBlanco(datosNormal, 1); datosNormal.setAlignment(0); } private static void acomodarDatosEspecificaciones(Paragraph datosNormal) throws BadElementException { Connection conexion = null; try { Class.forName("org.gjt.mm.mysql.Driver"); conexion = (Connection) DriverManager.getConnection(url, login, password); stm = (Statement) conexion.createStatement(); ResultSet rs = stm.executeQuery("select max(numero) as numero from todolonas.cotizacion;"); while (rs.next()) { idCotiza = rs.getInt("numero"); } conexion.close(); } catch (Exception e) { System.out.println("error: " + e); } try { Class.forName("org.gjt.mm.mysql.Driver"); conexion = (Connection) DriverManager.getConnection(url, login, password); stm = (Statement) conexion.createStatement(); ResultSet rs = stm.executeQuery( "SELECT especificacionTrabajo FROM todolonas.cotizacion where numero = '" + idCotiza + "';"); while (rs.next()) { especificacionTrabajo = rs.getString("especificacionTrabajo"); } conexion.close(); } catch (Exception e) { System.out.println("error: " + e); } if (especificacionTrabajo.equals("NA")) { System.out.println("no hay especificacion trabajo"); } else { PdfPTable table2 = new PdfPTable(2); table2.getDefaultCell().setBorder(PdfPCell.NO_BORDER); table2.addCell("Especificacin Trabajo"); table2.addCell(especificacionTrabajo); table2.setWidthPercentage(70); table2.setHorizontalAlignment(Element.ALIGN_LEFT); agregarLineasEnBlanco(datosNormal, 1); datosNormal.add(table2); } try { Class.forName("org.gjt.mm.mysql.Driver"); conexion = (Connection) DriverManager.getConnection(url, login, password); stm = (Statement) conexion.createStatement(); // System.out.println("nombre++++----> "+nombreCliente); ResultSet rs = stm.executeQuery( "SELECT especificacionDiseno FROM todolonas.cotizacion where numero = '" + idCotiza + "';"); while (rs.next()) { especificacionDiseno = rs.getString("especificacionDiseno"); } conexion.close(); } catch (Exception e) { System.out.println("error: " + e); } if (especificacionDiseno.equals("NA")) { System.out.println("no hay especificacion trabajo"); } else { PdfPTable table2 = new PdfPTable(2); table2.getDefaultCell().setBorder(PdfPCell.NO_BORDER); table2.addCell("Especificacin Diseo"); table2.addCell(especificacionDiseno); table2.setWidthPercentage(70); table2.setHorizontalAlignment(Element.ALIGN_LEFT); agregarLineasEnBlanco(datosNormal, 1); datosNormal.add(table2); } } private static void acomodarDatosTablaProductos(Paragraph subCatPart) throws BadElementException { numeroFilas = LogicaCotizacion.numero; cantidadTabla = new String[numeroFilas]; productoTabla = new String[numeroFilas]; precioTabla = new String[numeroFilas]; totalTabla = new String[numeroFilas]; descripcionTabla = new String[numeroFilas]; PdfPTable tabla = new PdfPTable(5); tabla.setWidthPercentage(100); PdfPCell celda = new PdfPCell(new Paragraph("Producto")); celda.setHorizontalAlignment(Element.ALIGN_CENTER); celda.setBackgroundColor(new Color(0, 175, 239)); tabla.addCell(celda); celda = new PdfPCell(new Paragraph("Descripcin")); celda.setHorizontalAlignment(Element.ALIGN_CENTER); celda.setBackgroundColor(new Color(0, 175, 239)); tabla.addCell(celda); celda = new PdfPCell(new Paragraph("P/U")); celda.setHorizontalAlignment(Element.ALIGN_CENTER); celda.setBackgroundColor(new Color(0, 175, 239)); tabla.addCell(celda); celda = new PdfPCell(new Paragraph("Cantidad")); celda.setHorizontalAlignment(Element.ALIGN_CENTER); celda.setBackgroundColor(new Color(0, 175, 239)); tabla.addCell(celda); celda = new PdfPCell(new Paragraph("Total")); celda.setHorizontalAlignment(Element.ALIGN_CENTER); celda.setBackgroundColor(new Color(0, 175, 239)); tabla.addCell(celda); for (int i = 0; i < numeroFilas; i++) { productoTabla[i] = "" + Cotizacion.PanelCotizacion.tablaProductos.getValueAt(i, 0); tabla.addCell(" " + productoTabla[i]); descripcionTabla[i] = "" + Cotizacion.PanelCotizacion.tablaProductos.getValueAt(i, 1); tabla.addCell("" + descripcionTabla[i]); precioTabla[i] = "" + Cotizacion.PanelCotizacion.tablaProductos.getValueAt(i, 2); tabla.addCell("$ " + precioTabla[i]); cantidadTabla[i] = "" + Cotizacion.PanelCotizacion.tablaProductos.getValueAt(i, 3); tabla.addCell(" " + cantidadTabla[i]); totalTabla[i] = "" + Cotizacion.PanelCotizacion.tablaProductos.getValueAt(i, 4); tabla.addCell("$ " + totalTabla[i]); } agregarLineasEnBlanco(subCatPart, 1); subCatPart.add(tabla); } private static void acomodarATTE(Paragraph datosCentro) throws BadElementException { ate = PanelCotizacion.labelATE.getText(); nombre = PanelCotizacion.labelNombre.getText(); datosCentro.add(new Paragraph(ate, fuenteNegrita2)); datosCentro.add(new Paragraph(nombre, fuenteNegrita2)); datosCentro.setAlignment(1); } private static void acomodarDatosPreciosTotales(Paragraph datosDerecha2) throws BadElementException { subtotal = PanelCotizacion.cajaSubtotal.getText(); iva = PanelCotizacion.cajaIVA.getText(); descuento = PanelCotizacion.cajaDescuento.getText(); total = PanelCotizacion.cajaTotal.getText(); PdfPTable table2 = new PdfPTable(2); table2.getDefaultCell().setBorder(PdfPCell.NO_BORDER); table2.addCell("Subtotal"); table2.addCell("$ " + subtotal); table2.addCell("IVA"); table2.addCell(iva); table2.addCell("Descuento"); table2.addCell(descuento); table2.addCell("Total"); table2.addCell("$ " + total); table2.setWidthPercentage(30); table2.setHorizontalAlignment(350); table2.setHorizontalAlignment(Element.ALIGN_RIGHT); agregarLineasEnBlanco(datosDerecha2, 1); datosDerecha2.add(table2); } private static void acomodarDatosNota(Paragraph datosNormal2) throws BadElementException { nota1 = PanelCotizacion.labelNota1.getText(); leyenda = PanelCotizacion.areaLeyenda.getText(); agregarLineasEnBlanco(datosNormal2, 5); datosNormal2.add(new Paragraph(nota1, fuenteChiquita)); datosNormal2.add(new Paragraph(leyenda, fuenteChiquita)); datosNormal2.setAlignment(0); } private static void acomodarImagenFirma(Paragraph imagen) throws BadElementException { try { Image im = Image.getInstance("src/Imagenes/firma3.png"); im.setAlignment(Image.ALIGN_CENTER | Image.TEXTWRAP); imagen.add(im); // agregarLineasEnBlanco(parrafoNormal, 3); } catch (Exception e) { System.out.print(e.getMessage()); } } private static void acomodarImagenPie(Paragraph imagen) throws BadElementException { try { Image im = Image.getInstance("src/Imagenes/abajo.png"); im.setAbsolutePosition(0, 0); im.setAlignment(Image.ALIGN_CENTER); im.scalePercent(60f); imagen.add(im); } catch (Exception e) { System.out.print(e.getMessage()); } } private static void agregarLineasEnBlanco(Paragraph parrafo, int nLineas) { for (int i = 0; i < nLineas; i++) { parrafo.add(new Paragraph(" ")); } } }