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 Vista.Componentes; import Controlador.Configuraciones; import Modelo.Alumno; import static Modelo.MensajesDeError.errorSQL; import Modelo.Representante; import com.itextpdf.text.BadElementException; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Image; import com.itextpdf.text.PageSize; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; import java.awt.Desktop; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import javax.swing.JFrame; import javax.swing.JOptionPane; /** * josediaz */ public class ReporteConstanciaEstudios extends JFrame { private Alumno alumno; private Representante representante; private ResultSet datos; private PdfPTable contenido; private float[] anchos = { 30, 30, 30, 30 }; private Paragraph parrafo, parrafo2; private Document documento; private String nombreAl, apellidoAl, sexoAl, grado, seccion, fecha, contenidoSalida; Image imghead; FileOutputStream archivoDeSalida; Configuraciones config = new Configuraciones(); private String ano, mes, dia, hora, minuto, segundo, mesActual; private final Calendar calendario = new GregorianCalendar(); private Date tiempoActual; public ReporteConstanciaEstudios(ResultSet datosEstudiante) { documento = new Document(PageSize.LETTER); contenido = new PdfPTable(anchos.length); contenido.setHorizontalAlignment(PdfPTable.ALIGN_CENTER); alumno = new Alumno(); representante = new Representante(); try { tiempoActual = new Date(); calendario.setTime(tiempoActual); ano = calendario.get(Calendar.YEAR) > 9 ? "" + calendario.get(Calendar.YEAR) : "0" + calendario.get(Calendar.YEAR); mes = calendario.get(Calendar.MONTH) > 9 ? "" + calendario.get(Calendar.MONTH) : "0" + calendario.get(Calendar.MONTH); dia = calendario.get(Calendar.DATE) > 9 ? "" + calendario.get(Calendar.DATE) : "0" + calendario.get(Calendar.DATE); hora = String.valueOf(calendario.get(Calendar.HOUR_OF_DAY)); minuto = calendario.get(Calendar.MINUTE) > 9 ? "" + calendario.get(Calendar.MINUTE) : "0" + calendario.get(Calendar.MINUTE); segundo = calendario.get(Calendar.SECOND) > 9 ? "" + calendario.get(Calendar.SECOND) : "0" + calendario.get(Calendar.SECOND); int mesA = Integer.valueOf(mes) + 1; // PROBLEMA, el mes siempre es mostrado con un entero menos switch (mesA) { case 1: mesActual = "Enero"; break; case 2: mesActual = "Febrero"; break; case 3: mesActual = "Marzo"; break; case 4: mesActual = "Abril"; break; case 5: mesActual = "Mayo"; break; case 6: mesActual = "Junio"; break; case 7: mesActual = "Julio"; break; case 8: mesActual = "Agosto"; break; case 9: mesActual = "Septiembre"; break; case 10: mesActual = "Octubre"; break; case 11: mesActual = "Noviembre"; break; case 12: mesActual = "Diciembre"; break; default: mesActual = "Mes invalido"; break; } //archivoDeSalida = new FileOutputStream("/home/yonalix/Escritorio/prueba.pdf"); archivoDeSalida = new FileOutputStream(config.getReportRoute() + ano + "-" + mesA + "-" + dia + "_" + hora + "-" + minuto + "-" + segundo + "_" + "ConstanciaEstudios.pdf"); PdfWriter.getInstance(documento, archivoDeSalida); documento.open(); // Crea el prrafo parrafo = new Paragraph(); logo(); imprimeEncabezado(); try { while (datosEstudiante.next()) { nombreAl = datosEstudiante.getString(2); apellidoAl = datosEstudiante.getString(3); sexoAl = datosEstudiante.getString(5); // se usa en caso de cambio en la escritura del calificativo estudiante fecha = datosEstudiante.getString(6); grado = datosEstudiante.getString(8); seccion = datosEstudiante.getString(9); } } catch (SQLException error) { String mensaje = errorSQL(error.getSQLState()); JOptionPane.showMessageDialog(null, mensaje); } if (sexoAl.equals("Masculino")) { contenidoSalida = "Por medio de la presente se hace constar que el estudiante " + nombreAl + " " + apellidoAl + " cursante del grado " + grado + " seccion " + seccion + " se encuentra inscrito en nuestra institucin U.E.E. Antonio Rangel?, Constancia de Inscripcin que emite Control de Estudios U.E.E. Antonio Rangel? en la ciudad de Valencia, a los " + dia + " dias del mes de " + mesActual + " de " + ano + " a las " + hora + " horas y " + minuto + " minutos.\n\n\n Firma CE. __________ Sello Secretaria de CE. __________"; } else { contenidoSalida = "Por medio de la presente se hace constar que la estudiante " + nombreAl + " " + apellidoAl + " cursante del grado " + grado + " seccion " + seccion + " se encuentra inscrita en nuestra institucin U.E.E. Antonio Rangel?, Constancia de Inscripcin que emite Control de Estudios U.E.E. Antonio Rangel? en la ciudad de Valencia, a los " + dia + " dias del mes de " + mesActual + " de " + ano + " a las " + hora + " horas y " + minuto + " minutos.\n\n\n Firma CE. __________ Sello Secretaria de CE. __________"; } parrafo2 = new Paragraph(contenidoSalida); documento.add(parrafo2); parrafo2.setAlignment(Paragraph.ALIGN_CENTER); documento.close(); archivoDeSalida.close(); if (Desktop.isDesktopSupported()) { try { File reporte = new File(config.getReportRoute() + ano + "-" + mesA + "-" + dia + "_" + hora + "-" + minuto + "-" + segundo + "_" + "ConstanciaEstudios.pdf"); Desktop.getDesktop().open(reporte); } catch (IOException ex) { // no application registered for PDFs JOptionPane.showMessageDialog(null, "No posee aplicacin para abrir el reporte"); } } } catch (IOException | DocumentException ioe) { JOptionPane.showMessageDialog(null, "Error de escritura en disco"); } } private void imprimeEncabezado() { try { //Alineas el prrafo al centro parrafo.setAlignment(Paragraph.ALIGN_CENTER); // Agregas contenido al prrafo parrafo.add("CONTANCIA DE ESTUDIOS"); //Aades el prrafo al documento documento.add(parrafo); parrafo.clear(); parrafo.add(" "); documento.add(parrafo); } catch (DocumentException de) { de.printStackTrace(); } } public void logo() { try { //imghead =Image.getInstance("/src/imag/logo2.png"); //imghead =Image.getInstance("/home/yonalix/Escritorio/simped/src/imagenes/logo2.png"); //imghead =Image.getInstance("/home/josediaz/Desktop/proyectos-xoxe/simped/src/Vista/Componentes/logo-colegioFIT.png"); imghead = Image.getInstance(config.getReportLogoRoute()); imghead.setAlignment(Image.ALIGN_CENTER); documento.add(imghead); // cbhead = writer.getDirectContent(); // PdfTemplate tp = cbhead.createTemplate(500, 250); //el rea destinada para el encabezado // tp.addImage(imghead); // cbhead.addTemplate(tp,300, 700);//posicin del tmplate derecha y abajo } catch (BadElementException e) { e.printStackTrace(); } catch (IOException | DocumentException e) { e.printStackTrace(); } // Phrase headPhraseImg = new Phrase(cbhead + "", FontFactory.getFont(FontFactory.TIMES_ROMAN, 7, Font.NORMAL)); // Phrase headPhraseImg = new Phrase(cbhead + "", FontFactory.getFont(FontFactory.TIMES_ROMAN, 7, Font.NORMAL)); } /* public static void main(String[] args) { new ReporteConstanciaInscripcion(); } */ }