Imagenes
El formato lleva dos imagenes en la parte superior derecha e izquierda en el directorio src/main/java creamos el paquete com.tutosofware.formatopremio.image y pegamos las siguientes imagenes:Modelo
Creamos el paquete com.tutosoftware.formatopremio.model y en el paquete creamos la clase Equipo.java
package com.tutosoftware.formatopremio.model;
import java.util.Date;
public class Equipo {
private String nombre;
private String apellidoPaterno;
private String apellidoMaterno;
private Date fechaNacimiento;
private String telefono;
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellidoPaterno() {
return apellidoPaterno;
}
public void setApellidoPaterno(String apellidoPaterno) {
this.apellidoPaterno = apellidoPaterno;
}
public String getApellidoMaterno() {
return apellidoMaterno;
}
public void setApellidoMaterno(String apellidoMaterno) {
this.apellidoMaterno = apellidoMaterno;
}
public Date getFechaNacimiento() {
return fechaNacimiento;
}
public void setFechaNacimiento(Date fechaNacimiento) {
this.fechaNacimiento = fechaNacimiento;
}
public String getTelefono() {
return telefono;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
}
Creamos la clase Logro.java
package com.tutosoftware.formatopremio.model;
public class Logro {
private String evento;
private String sede;
private String lugar;
private String comentario;
public String getEvento() {
return evento;
}
public void setEvento(String evento) {
this.evento = evento;
}
public String getSede() {
return sede;
}
public void setSede(String sede) {
this.sede = sede;
}
public String getLugar() {
return lugar;
}
public void setLugar(String lugar) {
this.lugar = lugar;
}
public String getComentario() {
return comentario;
}
public void setComentario(String comentario) {
this.comentario = comentario;
}
}
Creamos la clase Premio
package com.tutosoftware.formatopremio.model;
public class Premio {
private String year;
private String descripcion;
private String otorgado;
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public String getOtorgado() {
return otorgado;
}
public void setOtorgado(String otorgado) {
this.otorgado = otorgado;
}
}
El controlador
Creamos el paquete com.tutosoftware.formatopremio.bean ahí creamos la clase controladora que es la encargada de relizar la parte del negocio de nuestro formulario la llamamos FormatoPremioBean.java
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.FileUtils;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
import com.tutosoftware.formatopremio.model.Equipo;
import com.tutosoftware.formatopremio.model.Logro;
import com.tutosoftware.formatopremio.model.Premio;
@ManagedBean
@SessionScoped
public class FormatoPremioBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String modalidad;
private String imagenDeportista;
private UploadedFile file;
private String urlImagenTemporal;
private String deporte;
private String especialidad;
private String asociacion;
private String propuesta;
private String candidato;
private String candidatoApellidoPaterno;
private String candidatoApellidoMaterno;
private Date fecha;
private String lugarNacimiento;
private String curp;
private String email;
private String telefono;
private String celular;
private String calle;
private String numExt;
private String numInt;
private String colonia;
private String codigoPostal;
private String municipio;
private String estado;
private boolean visiblePanelIndividual=false;
private boolean visiblePanelEquipo=false;
private ArrayList<Equipo> equipos =new ArrayList<Equipo>();
Equipo equipo = new Equipo();
private ArrayList<Logro> logros= new ArrayList<Logro>();
Logro logro = new Logro();
private ArrayList<Premio> premios= new ArrayList<Premio>();
Premio premio = new Premio();
public String getModalidad() {
return modalidad;
}
public void setModalidad(String modalidad) {
this.modalidad = modalidad;
}
public String getImagenDeportista() {
return imagenDeportista;
}
public void setImagenDeportista(String imagenDeportista) {
this.imagenDeportista = imagenDeportista;
}
public UploadedFile getFile() {
return file;
}
public void setFile(UploadedFile file) {
this.file = file;
}
public String getUrlImagenTemporal() {
return urlImagenTemporal;
}
public void setUrlImagenTemporal(String urlImagenTemporal) {
this.urlImagenTemporal = urlImagenTemporal;
}
public void getEnablePropuesta() {
if(propuesta.equals("individual")) {
visiblePanelIndividual=true;
visiblePanelEquipo=false;
}
if(propuesta.equals("equipo")) {
visiblePanelIndividual=false;
visiblePanelEquipo=true;
}
}
public void subirImagen(FileUploadEvent event) {
byte[] bytes=event.getFile().getContents();
imagenDeportista=event.getFile().getFileName();
System.out.println("El archivo fue subido: "+imagenDeportista);
urlImagenTemporal=guardarFicheroTemporal(bytes,imagenDeportista);
}
public String getDeporte() {
return deporte;
}
public void setDeporte(String deporte) {
this.deporte = deporte;
}
public String getEspecialidad() {
return especialidad;
}
public void setEspecialidad(String especialidad) {
this.especialidad = especialidad;
}
public String getAsociacion() {
return asociacion;
}
public void setAsociacion(String asociacion) {
this.asociacion = asociacion;
}
public String getPropuesta() {
return propuesta;
}
public void setPropuesta(String propuesta) {
this.propuesta = propuesta;
}
public String getCandidato() {
return candidato;
}
public void setCandidato(String candidato) {
this.candidato = candidato;
}
public String getCandidatoApellidoPaterno() {
return candidatoApellidoPaterno;
}
public void setCandidatoApellidoPaterno(String candidatoApellidoPaterno) {
this.candidatoApellidoPaterno = candidatoApellidoPaterno;
}
public String getCandidatoApellidoMaterno() {
return candidatoApellidoMaterno;
}
public void setCandidatoApellidoMaterno(String candidatoApellidoMaterno) {
this.candidatoApellidoMaterno = candidatoApellidoMaterno;
}
public Date getFecha() {
return fecha;
}
public void setFecha(Date fecha) {
this.fecha = fecha;
}
public String getLugarNacimiento() {
return lugarNacimiento;
}
public void setLugarNacimiento(String lugarNacimiento) {
this.lugarNacimiento = lugarNacimiento;
}
public String getCurp() {
return curp;
}
public void setCurp(String curp) {
this.curp = curp;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTelefono() {
return telefono;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
public String getCelular() {
return celular;
}
public void setCelular(String celular) {
this.celular = celular;
}
public String getCalle() {
return calle;
}
public void setCalle(String calle) {
this.calle = calle;
}
public String getNumExt() {
return numExt;
}
public void setNumExt(String numExt) {
this.numExt = numExt;
}
public String getNumInt() {
return numInt;
}
public void setNumInt(String numInt) {
this.numInt = numInt;
}
public String getColonia() {
return colonia;
}
public void setColonia(String colonia) {
this.colonia = colonia;
}
public String getCodigoPostal() {
return codigoPostal;
}
public void setCodigoPostal(String codigoPostal) {
this.codigoPostal = codigoPostal;
}
public String getMunicipio() {
return municipio;
}
public void setMunicipio(String municipio) {
this.municipio = municipio;
}
public String getEstado() {
return estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
public boolean isVisiblePanelIndividual() {
return visiblePanelIndividual;
}
public void setVisiblePanelIndividual(boolean visiblePanelIndividual) {
this.visiblePanelIndividual = visiblePanelIndividual;
}
public boolean isVisiblePanelEquipo() {
return visiblePanelEquipo;
}
public void setVisiblePanelEquipo(boolean visiblePanelEquipo) {
this.visiblePanelEquipo = visiblePanelEquipo;
}
public ArrayList<Equipo> getEquipos() {
return equipos;
}
public void setEquipos(ArrayList<Equipo> equipos) {
this.equipos = equipos;
}
public Equipo getEquipo() {
return equipo;
}
public void setEquipo(Equipo equipo) {
this.equipo = equipo;
}
public ArrayList<Logro> getLogros() {
return logros;
}
public void setLogros(ArrayList<Logro> logros) {
this.logros = logros;
}
public Logro getLogro() {
return logro;
}
public void setLogro(Logro logro) {
this.logro = logro;
}
public ArrayList<Premio> getPremios() {
return premios;
}
public void setPremios(ArrayList<Premio> premios) {
this.premios = premios;
}
public Premio getPremio() {
return premio;
}
public void setPremio(Premio premio) {
this.premio = premio;
}
public void imprimir() {
Document document = new Document(PageSize.LETTER);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
PdfWriter writer= PdfWriter.getInstance(document, baos);
document.open();
Image imagen = Image.getInstance(getClass().getResource("/com/tutosoftware/formatopremio/image/premio.png"));
imagen.setAbsolutePosition(0f,700f);
document.add(imagen);
Image imagen2 = Image.getInstance(getClass().getResource("/com/tutosoftware/formatopremio/image/premio1.png"));
imagen2.setAbsolutePosition(450f,700f);
document.add(imagen2);
Font font1 = new Font();
font1.setSize(12);
font1.setStyle(Font.BOLD);
Font font2 = new Font();
font2.setSize(10);
Font font3 = new Font();
font3.setSize(12);
font3.setColor(BaseColor.WHITE);
font3.setStyle(Font.BOLD);
document.add(new Paragraph(" PREMIO ESTATAL DEL DEPORTE 2020 \n",font1));
document.add(new Paragraph(" CONSEJO DE PREMIACIÓN \n",font2));
document.add(new Paragraph(" FORMATO DE PREMIACIÓN \n",font1));
document.add(new Paragraph("\n",font1));
//document.add(new Paragraph(" PROPUESTA EN LA MODALIDAD \n",font3));
PdfPTable table = new PdfPTable(1);
table.setWidthPercentage(100.0f);
PdfPCell cell = new PdfPCell();
cell.setBackgroundColor(BaseColor.BLACK);
cell.setPhrase(new Phrase(" PROPUESTA EN LA MODALIDAD \n", font3));
table.addCell(cell);
document.add(table);
document.add(new Paragraph("MODALIDAD: "+modalidad,font2));
document.add(new Paragraph("Deporte: "+deporte+" Especialidad: "+especialidad,font2));
document.add(new Paragraph("Propuesta elaborada por: "+asociacion,font2));
document.add(new Paragraph("\n\n\n\n",font2));
PdfContentByte cb = writer.getDirectContent();
cb.saveState();
cb.setColorStroke(BaseColor.BLACK);
cb.moveTo(79,640);
cb.lineTo(220,640);
cb.moveTo(312,640);
cb.lineTo(440,640);
cb.moveTo(156,625);
cb.lineTo(460,625);
cb.stroke();
cb.restoreState();
Image imagen3 = Image.getInstance(urlImagenTemporal);
imagen3.scaleToFit(100,100);
imagen3.setAbsolutePosition(470f,580f);
document.add(imagen3);
if(propuesta.equals("individual")) {
PdfPTable table1 = new PdfPTable(1);
table1.setWidthPercentage(100.0f);
PdfPCell cell1 = new PdfPCell();
cell1.setBackgroundColor(BaseColor.BLACK);
cell1.setPhrase(new Phrase(" DATOS DE CANDIDATO (PROPUESTA INDIVIDUAL) \n", font3));
table1.addCell(cell1);
document.add(table1);
document.add(new Paragraph("Nombre del candidato: "+candidatoApellidoPaterno+" "+candidatoApellidoMaterno+" "+candidato,font2));
String mes = mostrarFecha(fecha);
document.add(new Paragraph("Fecha de nacimiento: "+mes+" Lugar de nacimiento: "+lugarNacimiento,font2));
document.add(new Paragraph("C.U.R.P. "+curp+" Correo electrónico: "+email,font2));
document.add(new Paragraph("Teléfono: "+telefono+" No. celular: "+celular,font2));
document.add(new Paragraph("Domicilio: "+calle+" "+numExt+" "+numInt+" "+colonia+" "+codigoPostal,font2));
document.add(new Paragraph(" "+municipio+" "+estado,font2));
document.add(new Paragraph("\n\n",font2));
PdfContentByte cb1 = writer.getDirectContent();
cb1.saveState();
cb1.moveTo(142,530);
cb1.lineTo(560,530);
cb1.moveTo(138,515);
cb1.lineTo(245,515);
cb1.moveTo(360,515);
cb1.lineTo(560,515);
cb1.moveTo(79,500);
cb1.lineTo(220,500);
cb1.moveTo(312,500);
cb1.lineTo(560,500);
cb1.moveTo(79,485);
cb1.lineTo(160,485);
cb1.moveTo(230,485);
cb1.lineTo(500,485);
cb1.moveTo(79,470);
cb1.lineTo(530,470);
cb1.moveTo(79,455);
cb1.lineTo(530,455);
cb1.stroke();
cb1.restoreState();
}
if(propuesta.equals("equipo")) {
PdfPTable table2 = new PdfPTable(1);
table2.setWidthPercentage(100.0f);
PdfPCell cell2 = new PdfPCell();
cell2.setBackgroundColor(BaseColor.BLACK);
cell2.setPhrase(new Phrase(" PROPUESTA POR EQUIPO O DEPORTES DE CONJUNTO (INTEGRANTES DEL EQUIPO) \n", font3));
table2.addCell(cell2);
document.add(table2);
PdfPTable table3 = new PdfPTable(4);
table3.setWidthPercentage(100.0f);
table3.setWidths(new float[] {1.0f,4.0f,2.0f,2.0f});
table3.setSpacingBefore(10);
PdfPCell cell3 = new PdfPCell();
cell3.setPhrase(new Phrase(" ", font2));
table3.addCell(cell3);
cell3.setPhrase(new Phrase(" Nombre de los Integrantes del Equipo", font2));
table3.addCell(cell3);
cell3.setPhrase(new Phrase(" Fecha de Nacimiento ", font2));
table3.addCell(cell3);
cell3.setPhrase(new Phrase(" Teléfono ", font2));
table3.addCell(cell3);
int i=0;
for(Equipo e:equipos) {
++i;
table3.addCell(new Phrase(" "+i, font2));
table3.addCell(new Phrase(e.getApellidoPaterno()+" "+e.getApellidoMaterno()+" "+e.getNombre(), font2));
table3.addCell(new Phrase(mostrarFecha(e.getFechaNacimiento()), font2));
table3.addCell(new Phrase(e.getTelefono(), font2));
}
document.add(table3);
}
PdfPTable table4 = new PdfPTable(1);
table4.setWidthPercentage(100.0f);
PdfPCell cell4 = new PdfPCell();
cell4.setBackgroundColor(BaseColor.BLACK);
cell4.setPhrase(new Phrase(" LOGROS QUE ACREDITEN EL MERECIMIENTO DEL PREMIO ESTATAL DEL DEPORTE 2020 \n", font3));
table4.addCell(cell4);
document.add(table4);
PdfPTable table5 = new PdfPTable(4);
table5.setWidthPercentage(100.0f);
table5.setWidths(new float[] {3.0f,3.0f,1.0f,3.0f});
table5.setSpacingBefore(10);
PdfPCell cell5 = new PdfPCell();
PdfPCell cell6 = new PdfPCell();
cell6.setBackgroundColor(BaseColor.BLACK);
cell6.setPhrase(new Phrase("RESULTADOS DEPORTIVOS", font3));
cell6.setColspan(4);
table5.addCell(cell6);
cell5.setPhrase(new Phrase("Evento", font2));
table5.addCell(cell5);
cell5.setPhrase(new Phrase("Sede y fecha", font2));
table5.addCell(cell5);
cell5.setPhrase(new Phrase("Lugar obtenido", font2));
table5.addCell(cell5);
cell5.setPhrase(new Phrase("Comentario del lugar obtenido ", font2));
table5.addCell(cell5);
for(Logro l:logros) {
table5.addCell(new Phrase(l.getEvento(), font2));
table5.addCell(new Phrase(l.getSede(), font2));
table5.addCell(new Phrase(l.getLugar(), font2));
table5.addCell(new Phrase(l.getComentario(), font2));
}
document.add(table5);
PdfPTable table6 = new PdfPTable(1);
table6.setWidthPercentage(100.0f);
PdfPCell cell7 = new PdfPCell();
cell7.setBackgroundColor(BaseColor.BLACK);
cell7.setPhrase(new Phrase("RECONOCIMIENTOS Y PREMIOS \n", font3));
table6.addCell(cell7);
document.add(table6);
PdfPTable table7 = new PdfPTable(3);
table7.setWidthPercentage(100.0f);
table7.setWidths(new float[] {1.0f,3.0f,3.0f});
table7.setSpacingBefore(10);
PdfPCell cell8 = new PdfPCell();
cell8.setPhrase(new Phrase("Año", font2));
table7.addCell(cell8);
cell8.setPhrase(new Phrase("Descripción del reconocimiento o premio", font2));
table7.addCell(cell8);
cell8.setPhrase(new Phrase("Otorgado por", font2));
table7.addCell(cell8);
for(Premio p:premios) {
table7.addCell(new Phrase(p.getYear(), font2));
table7.addCell(new Phrase(p.getDescripcion(), font2));
table7.addCell(new Phrase(p.getOtorgado(), font2));
}
document.add(table7);
}catch (Exception ex) {
System.out.println("Error " + ex);
}
document.close();
FacesContext context = FacesContext.getCurrentInstance();
Object response = context.getExternalContext().getResponse();
if (response instanceof HttpServletResponse) {
HttpServletResponse hsr = (HttpServletResponse) response;
hsr.setContentType("application/pdf");
hsr.setHeader("Content-disposition", "attachment;filename=/formato.pdf");
hsr.setContentLength(baos.size());
try {
ServletOutputStream out = hsr.getOutputStream();
baos.writeTo(out);
out.flush();
} catch (IOException ex) {
System.out.println("Error: " + ex.getMessage());
}
context.responseComplete();
}
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String path = servletContext.getRealPath("/img/tmp");
File file = new File(path);
File[] files = file.listFiles();
for (File f:files)
{
if (f.isFile() && f.exists())
{
f.delete();
System.out.println("successfully deleted");
}else{
System.out.println("cant delete a file due to open or error");
}
}
}
public void agregarIntegrante() {
Equipo equip=new Equipo();
equip.setNombre(equipo.getNombre());
equip.setApellidoPaterno(equipo.getApellidoPaterno());
equip.setApellidoMaterno(equipo.getApellidoMaterno());
equip.setFechaNacimiento(equipo.getFechaNacimiento());
equip.setTelefono(equipo.getTelefono());
equipos.add(equip);
equipo.setNombre("");;
equipo.setApellidoPaterno("");
equipo.setApellidoMaterno("");
equipo.setFechaNacimiento(null);
equipo.setTelefono("");
}
public void agregarLogro() {
Logro lo = new Logro();
lo.setEvento(logro.getEvento());
lo.setSede(logro.getSede());
lo.setLugar(logro.getLugar());
lo.setComentario(logro.getComentario());
logros.add(lo);
logro.setEvento("");
logro.setSede("");
logro.setLugar("");
logro.setComentario("");
}
public void agregarPremio() {
Premio pr = new Premio();
pr.setYear(premio.getYear());
pr.setDescripcion(premio.getDescripcion());
pr.setOtorgado(premio.getOtorgado());
premios.add(pr);
premio.setYear("");
premio.setDescripcion("");
premio.setOtorgado("");
}
public void limpiarFormulario() {
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String path = servletContext.getRealPath("/img/tmp");
File file = new File(path);
File[] files = file.listFiles();
for (File f:files)
{
if (f.isFile() && f.exists())
{
f.delete();
System.out.println("successfully deleted");
}else{
System.out.println("cant delete a file due to open or error");
}
}
modalidad="";
deporte="";
especialidad="";
asociacion="";
propuesta="";
candidato="";
candidatoApellidoPaterno="";
candidatoApellidoMaterno="";
fecha=null;
lugarNacimiento="";
curp="";
email="";
telefono="";
celular="";
calle="";
numExt="";
numInt="";
colonia="";
codigoPostal="";
municipio="";
estado="";
equipos.clear();
logros.clear();
premios.clear();
visiblePanelIndividual=false;
visiblePanelEquipo=false;
}
public static String guardarFicheroTemporal(byte[] bytes,String nombreArchivo) {
String ubicacionImagen=null;
ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
String path = servletContext.getRealPath("/img/tmp/"+nombreArchivo);
System.out.println("El path es: "+path);
File f = null;
InputStream in = null;
try {
f = new File(path);
in = new ByteArrayInputStream(bytes);
System.out.println();
FileOutputStream out = new FileOutputStream(f.getAbsolutePath());
int c=0;
while((c=in.read())>=0) {
out.write(c);
}
out.flush();
out.close();
ubicacionImagen=path;
}catch(Exception e) {
System.err.println("No se pudo cargar la imagen: "+e);
}
System.out.println("La imagen es: "+ubicacionImagen);
return ubicacionImagen;
}
public static String mostrarFecha(Date fecha) {
Calendar cal= Calendar.getInstance();
cal.setTime(fecha);
int dia=cal.get(Calendar.DAY_OF_MONTH);
int mes=cal.get(Calendar.MONTH)+1;
int year=cal.get(Calendar.YEAR);
String mesString;
switch (mes) {
case 1: mesString = "Enero";
break;
case 2: mesString = "Febrero";
break;
case 3: mesString = "Marzo";
break;
case 4: mesString = "Abril";
break;
case 5: mesString = "Mayo";
break;
case 6: mesString = "Junio";
break;
case 7: mesString = "Julio";
break;
case 8: mesString = "Agosto";
break;
case 9: mesString = "Septiembre";
break;
case 10: mesString = "Octubre";
break;
case 11: mesString = "Noviembre";
break;
case 12: mesString = "Diciembre";
break;
default: mesString = "Invalid month";
break;
}
String fechaNacimiento=""+dia+" de "+mesString+" "+year;
return fechaNacimiento;
}
}