Java tutorial
package com.solidmaps.webapp.report; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.util.Calendar; import java.util.List; import org.apache.commons.lang.StringUtils; 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.Font.FontFamily; import com.itextpdf.text.PageSize; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfWriter; import com.solidmaps.webapp.entity.CharterTypeEntity; import com.solidmaps.webapp.entity.LicenseEXEntity; import com.solidmaps.webapp.entity.LicenseExCharterProductEntity; import com.solidmaps.webapp.utils.DateUtils; /** * Formulrio: EX01 - Requerimento para Apostilamento de Certificado de Registro - PJ * * @author brunorocca * */ public class RequerimentAlterLicenseExercitoPDF { private String filePath; private final String WINDOWS_LINE_SEPARATOR = "\r\n"; private Integer numLine = 1; public RequerimentAlterLicenseExercitoPDF(String filePath) { this.filePath = filePath; } private final Font FONT_PARAGRAPH = new Font(FontFamily.TIMES_ROMAN, 10, Font.NORMAL); private final Font FONT_HEADER = new Font(FontFamily.TIMES_ROMAN, 10, Font.NORMAL); /** * * @param license * Licensa vigente do Exrcito * @param listCharterType * Lista de Atividades a incluir * @param listProducts * Lista de Produtos a incluir, bem como os limites de Armazenamento * @param text * Texto sobre a altees Cadastrais * @param type * Tipo de alterao cadastral (Endereo, Responsvel, etc) */ public String generate(LicenseEXEntity license, List<CharterTypeEntity> listCharterType, List<LicenseExCharterProductEntity> listProducts, String text, String type) { Document doc = new Document(); PdfWriter docWriter = null; String fileDocPath = ""; try { fileDocPath = this.createDocument(doc, docWriter, license); this.createParagraph(doc, license); this.createCharter(doc, license, listCharterType); this.createIncludeProduct(doc, license, listProducts); this.createAlterLicense(doc, license, text, type); this.createSignature(doc, license); } catch (DocumentException dex) { dex.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } finally { if (doc != null) { // close the document doc.close(); } if (docWriter != null) { // close the writer docWriter.close(); } } return fileDocPath; } private String createDocument(Document doc, PdfWriter docWriter, LicenseEXEntity license) throws FileNotFoundException, DocumentException { String fileName = "REQUERIMENTO PARA APOSTILAMENTO DE CERTIFICADO DE REGISTRO " + license.getNumRegister() + ".pdf"; docWriter = PdfWriter.getInstance(doc, new FileOutputStream(filePath + fileName)); // document header attributes doc.addAuthor("EnforceMaps"); doc.addCreationDate(); doc.addProducer(); doc.addCreator("EnforceMaps"); doc.addTitle( "REQUERIMENTO PARA APOSTILAMENTO DE CERTIFICADO DE REGISTRO " + license.getNumRegister() + ".pdf"); doc.setPageSize(PageSize.A4); // open document doc.open(); return fileName; } private void createParagraph(Document doc, LicenseEXEntity license) throws DocumentException { StringBuilder sbHeader = new StringBuilder().append("Exmo Sr Comandante da ") .append(license.getCompany().getRegion()).append(" Regio Militar"); StringBuilder sbParagraph = new StringBuilder().append(license.getCompany().getName().toUpperCase()) .append(", incrita sob o CNPJ n ").append(license.getCompany().getCnpj()) .append(", estabelecida na cidade de ").append(license.getCompany().getCity().toUpperCase()) .append("/").append(license.getCompany().getState()).append(", ") .append(license.getCompany().getStreet()).append(", CEP ").append(license.getCompany().getCep()) .append(", email: ").append(license.getUserResponsable().getEmail()).append(", fone/fax ") .append(license.getUserResponsable().getPhoneDDD()).append(" ") .append(license.getUserResponsable().getPhoneNumber()).append(" representada neste ato por seu ") .append(license.getCompany().getUserResponsable().getOffice()).append(", Sr ") .append(license.getCompany().getUserResponsable().getName()).append(", inscrito sob o CPF: ") .append(license.getCompany().getUserResponsable().getCpf()) .append(", portador da cdula de identidade (RG): ") .append(license.getCompany().getUserResponsable().getRg()).append(", de nacionalidade ") .append(license.getCompany().getUserResponsable().getCountry()).append(", estado civil ") .append(license.getCompany().getUserResponsable().getMaritalStatus()) .append(" profisso Engenheiro Qumico, domiciliado a ") .append(license.getCompany().getUserResponsable().getStreet()) .append(license.getCompany().getUserResponsable().getStreet()).append(" CEP ") .append(license.getCompany().getUserResponsable().getCep()); if (license.getCompany().getProcuratorEntity() != null) { sbParagraph.append(" e seus procuradores, conforme procurao anexo, Sr ") .append(license.getCompany().getProcuratorEntity().getName()).append(" inscrito sob o CPF n: ") .append(license.getCompany().getProcuratorEntity().getCpf()) .append(" portador da cdula de identidade (RG) n: ") .append(license.getCompany().getProcuratorEntity().getRg()).append(" ") .append(license.getCompany().getProcuratorEntity().getRgExpeditionCity()); } sbParagraph.append(", vem pelo presente, requerer V Ex.a "); // Texto cabealho Paragraph paragraphHeaderText = new Paragraph( "REQUERIMENTO PARA APOSTILAMENTO DE CERTIFICADO DE REGISTRO - PJ"); paragraphHeaderText.setFont(FONT_HEADER); paragraphHeaderText.setAlignment(Element.ALIGN_CENTER); // Texto Comandante Paragraph paragraphComand = new Paragraph(sbHeader.toString()); paragraphComand.setFont(FONT_PARAGRAPH); // Texto da Empresa Paragraph paragraphCompany = new Paragraph(sbParagraph.toString()); paragraphCompany.setFont(FONT_PARAGRAPH); doc.add(paragraphHeaderText); doc.add(Chunk.NEWLINE); doc.add(paragraphComand); doc.add(Chunk.NEWLINE); doc.add(paragraphCompany); doc.add(Chunk.NEWLINE); } /** * Incluso de Atividades * * @param doc * @param license * @param listCharterType * @throws DocumentException */ private void createCharter(Document doc, LicenseEXEntity license, List<CharterTypeEntity> listCharterType) throws DocumentException { if (listCharterType == null || listCharterType.isEmpty()) { return; } StringBuilder sb = new StringBuilder().append(numLine++).append("-) ") .append("APOSTILAMENTO em seu CERTIFICADO DE REGISTRO n: ").append(license.getNumRegister()) .append(" para a incluso das atividades:"); for (CharterTypeEntity charterType : listCharterType) { sb.append(charterType.getName()).append(", "); } sb.append( " em todos os produtos produtos j listados no Certificado de Registro, de acordo com o artigo 96 do Regulamento") .append(" aprovado pelo Decreto nmero 3.665, de 20 de novembro de 2000, para fiscalizao de produtos controlados (R-105) ") .append(" e legislao complementar"); Paragraph paragraph = new Paragraph(sb.toString()); paragraph.setFont(FONT_PARAGRAPH); doc.add(Chunk.NEWLINE); doc.add(paragraph); doc.add(Chunk.NEWLINE); } /** * Incluso de Produtos * * @param doc * @param license * @param listProducts * @throws DocumentException */ private void createIncludeProduct(Document doc, LicenseEXEntity license, List<LicenseExCharterProductEntity> listProducts) throws DocumentException { if (listProducts == null || listProducts.isEmpty()) { return; } StringBuilder sb = new StringBuilder().append(numLine++).append("-) ") .append("APOSTILAMENTO em seu CERTIFICADO DE REGISTRO n: ").append(license.getNumRegister()) .append(" para a incluso dos seguintes produtos:").append(WINDOWS_LINE_SEPARATOR); for (LicenseExCharterProductEntity productCharter : listProducts) { sb.append(productCharter.getProduct().getOrder()).append(" - ") .append(productCharter.getProduct().getName()).append(" - ") .append(productCharter.getQtdProduct()).append(" - ").append(productCharter.getTypeQtdProduct()) .append(WINDOWS_LINE_SEPARATOR); } sb.append( "Para todas as atividades j cadastradas no Certificado de Registro, de acordo com o Artigo 96 do Regulamento ") .append("aprovado pelo Decreto No. 3.665, de 20 de Novembro de 2000, para a fiscalizao de Produtos Controlados (R-105) ") .append("e legislao complementar."); Paragraph paragraph = new Paragraph(sb.toString()); paragraph.setFont(FONT_PARAGRAPH); doc.add(Chunk.NEWLINE); doc.add(paragraph); doc.add(Chunk.NEWLINE); } /** * Alteraes Cadastrais * * @param doc * @param license * @param listProducts * @throws DocumentException */ private void createAlterLicense(Document doc, LicenseEXEntity license, String text, String type) throws DocumentException { if (StringUtils.isEmpty(text)) { return; } StringBuilder sb = new StringBuilder().append(numLine++).append("-) ").append("CORREO de ").append(type) .append(" em seu CERTIFICADO DE REGISTRO n:").append(license.getNumRegister()).append(" para: ") .append(text).append(" conforme cadastrado junto a Prefeitura da Cidade de ") .append(license.getCompany().getCity()).append("/").append(license.getCompany().getState()) .append(" e Receita Federal."); Paragraph paragraph = new Paragraph(sb.toString()); paragraph.setFont(FONT_PARAGRAPH); doc.add(Chunk.NEWLINE); doc.add(paragraph); doc.add(Chunk.NEWLINE); } private void createSignature(Document doc, LicenseEXEntity license) throws DocumentException { StringBuilder sbTerms = new StringBuilder().append("Nestes termos").append(WINDOWS_LINE_SEPARATOR) .append(" Pede deferimento."); StringBuilder sbDate = new StringBuilder().append(license.getCompany().getCity()).append("/") .append(license.getCompany().getState()).append(", ") .append(DateUtils.format(Calendar.getInstance())); StringBuilder sbSignature = new StringBuilder().append("____________________________________________") .append(WINDOWS_LINE_SEPARATOR).append(license.getCompany().getName()) .append(WINDOWS_LINE_SEPARATOR).append(license.getCompany().getUserResponsable().getName()) .append(" - ").append(license.getCompany().getUserResponsable().getOffice()); Paragraph paragraphTerms = new Paragraph(sbTerms.toString()); paragraphTerms.setFont(FONT_PARAGRAPH); paragraphTerms.setAlignment(Element.ALIGN_CENTER); Paragraph paragraphDate = new Paragraph(sbDate.toString()); paragraphDate.setFont(FONT_PARAGRAPH); Paragraph paragraphSignature = new Paragraph(sbSignature.toString()); paragraphSignature.setFont(FONT_PARAGRAPH); paragraphSignature.setAlignment(Element.ALIGN_CENTER); doc.add(Chunk.NEWLINE); doc.add(paragraphTerms); doc.add(Chunk.NEWLINE); doc.add(paragraphDate); doc.add(Chunk.NEWLINE); doc.add(Chunk.NEWLINE); doc.add(paragraphSignature); doc.add(Chunk.NEWLINE); } }