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 com.automaster.autoview.server.servlet; import com.automaster.autoview.server.DAO.ClienteDAO; import com.automaster.autoview.server.DAO.UnidadeDAO; import com.automaster.autoview.server.DAO.VeiculoDAO; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Phrase; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.ColumnText; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.PdfStamper; import java.io.FileOutputStream; import java.io.IOException; import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.TreeMap; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Adriano */ public class LendoTemplateContratoVenda { public static void main(String[] args) throws IOException, DocumentException { //String placa = request.getParameter("placa"); //criando map que ir adicionar as informaes do cliente ArrayList<TreeMap<String, String>> clienteAuxiliar = new ArrayList<TreeMap<String, String>>(); int codCliente = Integer.parseInt("2"); int tipoCliente = Integer.parseInt("2"); String cpfCnpj = "53487465000185"; // busca no BD as informaes do cliente ClienteDAO clienteDAO = null; clienteDAO = new ClienteDAO(); TreeMap<String, ArrayList<TreeMap<String, String>>> cliente = clienteDAO.buscarPorCodCliente(codCliente); //guarda no map auxiliar clienteAuxiliar = cliente.get(cliente.firstKey()); //variveis de endereo do cliente String logradouro = null; String bairro = null; String numero = null; String cidade = null; String cep = null; String uf = null; String nomeEstado = null; //busca no BD aas informaes da unidade UnidadeDAO unidadeDAO = new UnidadeDAO(); int codUnidade = Integer.parseInt(clienteAuxiliar.get(0).get("codUnidade")); //guarda no map as informaes da unidade TreeMap<String, String> unidade = unidadeDAO.buscarPorCodUnidadeCompleta(codUnidade); //vaiveis que iro guardar as informaes da unidade String autoMaster = "AUTO MASTER LTDA"; String cnpjUn = formataCNPJ(unidade.get("cnpj")); String cidadeUn = unidade.get("nomeCidade"); String nomeEstadoUn = unidade.get("nomeCompletoEstado"); String ufUn = unidade.get("nomeEstado"); String logradouroUn = unidade.get("logradouro"); String numeroUn = unidade.get("numero"); String bairroUn = unidade.get("bairro"); // pega a data atual do sistema Date dataAtual = new Date(System.currentTimeMillis()); //System.out.println("Cliente auxiliar :"+clienteAuxiliar); //busca no BD as informaes de endereo do cliente TreeMap<String, String> endAuxiliar = new TreeMap<String, String>(); int index = 0; for (TreeMap<String, String> ends : clienteAuxiliar) { if (clienteAuxiliar.get(index).get("descricaoEndereco").equalsIgnoreCase("ENDEREO DE COBRANA") && endAuxiliar.get(ends.get("codEndereco")) == null) { //System.out.println("linha 01!!"); logradouro = ends.get("logradouro"); bairro = ends.get("bairro"); numero = ends.get("numeroEndereco"); cidade = ends.get("nomeCidade"); cep = ends.get("cep"); uf = ends.get("estadoUf"); nomeEstado = ends.get("nomeEstado"); endAuxiliar.put(ends.get("codEndereco"), ends.get("codEndereco")); //System.out.println("Linha 02!!"); } index++; } // montando a string que ir compor o cabealho do contrato String cab1 = "Pelo presente instrumento particular, de um lado "; String cab2 = autoMaster; String cab3 = ", atuante no setor de segurana de monitoramento de veculos, inscrita no "; String cab4 = "CNPJ: " + cnpjUn; String cab5 = " localizada na "; String cab6 = logradouroUn; String cab7 = " n "; String cab8 = numeroUn; String cab9 = ", "; String cab10 = bairroUn; String cab11 = ", "; String cab12 = cidadeUn; String cab13 = "/"; String cab14 = ufUn; String cab15 = ", doravante "; String cab16 = "designada simplesmente "; String cab17 = "AUTO MASTER MONITORAMENTO"; String cab18 = ", e de outro lado "; String cab19 = clienteAuxiliar.get(0).get("nomeCliente") + ((tipoCliente == 1) ? ", CPF: " + formataCPF(cpfCnpj) : ", CNPJ: " + formataCNPJ(cpfCnpj)); String cab20 = " localizado a "; String cab21 = logradouro; String cab22 = ", bairro: "; String cab23 = bairro; String cab24 = ", N "; String cab25 = numero; String cab255 = ", CIDADE : "; String cab26 = cidade; String cab266 = ", CEP : "; String cab2661 = cep; String cab27 = ", adquirente do RASTREADOR PARA AUTOS AUTO MASTER, "; String cab28 = "doravante denominado simplesmente como CONTRATANTE, firmam o presente CONTRATO DE PRESTAO DE SERVIOS, " + "conforme condies e clusulas adiante mencionadas:"; //busca no BD os veculos do cliente VeiculoDAO veiculoDAO = new VeiculoDAO(); ArrayList<TreeMap<String, String>> veiculos = veiculoDAO.buscarVeiculoAtivoPorCliente(codCliente); //incrementa a string somente com as placas dos veculos do cliente String listaDePlacas = ""; for (int i = 0; i < veiculos.size(); i++) { if (i == veiculos.size() - 1) { listaDePlacas = " " + listaDePlacas + veiculos.get(i).get("placa"); } else { listaDePlacas = " " + listaDePlacas + veiculos.get(i).get("placa") + ","; } } String textPlacas1 = "3.1 - Os veculo(s) listado(s) a seguir, com sua(s) respectiva(s) data(s) de instalao, so identificado(s) pela(s) placa(s): "; String textPlacas2 = listaDePlacas; String textPlacas3 = ", sendo vedada a remoo do aparelho rastreador desses(s) veiculo(s), sem prvia e expressa anuncia da Contratada, " + "que se dar sempre por escrito, sob pena de aplicao da penalidade prevista por infrao contratual;"; // PDF que o template da aplicao PdfReader reader = new PdfReader( "D:\\Users\\Adriano\\Documents\\NetBeansProjects\\JRGWT\\web\\contratos\\contrato_venda.pdf"); //PDF resultante PdfStamper stamper = new PdfStamper(reader, new FileOutputStream( "D:\\Users\\Adriano\\Documents\\NetBeansProjects\\JRGWT\\web\\contratos\\contrato_venda01.pdf")); // ir adicionar na primeira pgina do PDF resultante PdfContentByte cabecalho = stamper.getOverContent(1); // cria um objeto que ir acomodar a o PdfContentByte ColumnText collumText = new ColumnText(cabecalho); // definie as configuraes de fonte para o objeto frase BaseFont normal = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); BaseFont negrito = BaseFont.createFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); //cria uma frase Phrase phraseCabecalho = new Phrase(); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab1); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab2); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab3); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab4); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab5); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab6); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab7); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab8); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab9); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab10); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab11); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab12); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab13); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab14); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab15); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab16); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab17); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab18); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab19); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab20); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab21); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab22); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab23); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab24); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab25); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab255); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab26); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab266); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab2661); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab27); //adiciona fonte para a frase phraseCabecalho.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseCabecalho.add(cab28); //adicionar a frase no contener do PDF collumText.addText(phraseCabecalho); // escolhe alinhamento justificado para o objeto collumText collumText.setAlignment(3); //justifica a primeira linha collumText.setAdjustFirstLine(true); //dar uma identao de 30pt na primeira linha do collumText collumText.setIndent(30); //posiciona o collumText na pgina 1 collumText.setSimpleColumn(40, 560, 560, 760); //escreve o collumText no PDF collumText.go(false); // ITENS ADICIONADOS A P?GINA 04 // // ir adicionar na quarta pgina do PDF resultante PdfContentByte placas = stamper.getOverContent(4); // cria um objeto que ir acomodar a o PdfContentByte ColumnText collumTextPlacas = new ColumnText(placas); // definie as configuraes de fonte para o objeto frase //BaseFont bfPlacas = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); //cria uma frase Phrase phrasePlacas = new Phrase(); //adiciona fonte para a frase phrasePlacas.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phrasePlacas.add(textPlacas1); //adiciona fonte para a frase phrasePlacas.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phrasePlacas.add(textPlacas2); //adiciona fonte para a frase phrasePlacas.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phrasePlacas.add(textPlacas3); //adicionar a frase no contener do PDF collumTextPlacas.addText(phrasePlacas); //dar uma identao de 30pt na primeira linha do collumText collumTextPlacas.setIndent(30); // escolhe alinhamento justificado para o objeto collumText collumTextPlacas.setAlignment(3); //justifica a primeira linha collumTextPlacas.setAdjustFirstLine(true); //posiciona o collumText na pgina 4 collumTextPlacas.setSimpleColumn(40, 600, 560, 800); //escreve o collumText no PDF collumTextPlacas.go(false); // ITENS ADICIONADOS A P?GINA 06 // String dia = new SimpleDateFormat("dd").format(dataAtual); String ano = new SimpleDateFormat("yyyy").format(dataAtual); //form.setFieldProperty("txtDataLocal", "txtDataLocal", PdfFormField., inst); int mes = dataAtual.getMonth(); String mesEscrito = null; switch (mes) { case 0: mesEscrito = "janeiro"; break; case 1: mesEscrito = "favereiro"; break; case 2: mesEscrito = "maro"; break; case 3: mesEscrito = "abril"; break; case 4: mesEscrito = "maio"; break; case 5: mesEscrito = "junho"; break; case 6: mesEscrito = "julho"; break; case 7: mesEscrito = "agosto"; break; case 8: mesEscrito = "setembro"; break; case 9: mesEscrito = "outubro"; break; case 10: mesEscrito = "novembro"; break; case 11: mesEscrito = "dezembro"; break; } String textRodape1 = "Fica eleito o foro da Comarca de "; String textRodape12 = cidadeUn; String textRodape121 = ", estado do "; String textRodape122 = nomeEstadoUn; String textRodape123 = ", para dirimir eventuais dvidas oriundas do presente contrato, " + "quer na sua aplicao ou interpretao, com renncia a qualquer outro por mais " + "privilegiado que seja. E por estarem assim compromissados, firmam o presente termo " + "em 02 (duas) vias de igual teor e forma na presena de 2 (duas) testemunhas abaixo assinadas."; String textRodape2 = cidadeUn + " , " + nomeEstadoUn + " " + dia + " de " + mesEscrito + " de " + ano + "."; String textRodape3 = autoMaster + "\n" + cnpjUn; String textRodape4 = clienteAuxiliar.get(0).get("nomeCliente") + "\n" + ((tipoCliente == 1) ? "CPF: " + formataCPF(cpfCnpj) : "CNPJ: " + formataCNPJ(cpfCnpj)); // ir adicionar na quarta pgina do PDF resultante PdfContentByte rodape = stamper.getOverContent(6); // cria um objeto que ir acomodar a o PdfContentByte ColumnText collumTextRodape1 = new ColumnText(rodape); //cria uma frase Phrase phraseRadape1 = new Phrase(); //adiciona fonte para a frase phraseRadape1.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseRadape1.add(textRodape1); //adiciona fonte para a frase phraseRadape1.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseRadape1.add(textRodape12); //adiciona fonte para a frase phraseRadape1.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseRadape1.add(textRodape121); //adiciona fonte para a frase phraseRadape1.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseRadape1.add(textRodape122); //adiciona fonte para a frase phraseRadape1.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseRadape1.add(textRodape123); //adicionar a frase no contener do PDF collumTextRodape1.addText(phraseRadape1); //dar uma identao de 30pt na primeira linha do collumText collumTextRodape1.setIndent(30); // escolhe alinhamento justificado para o objeto collumText collumTextRodape1.setAlignment(3); //justifica a primeira linha collumTextRodape1.setAdjustFirstLine(true); //posiciona o collumText na pgina 4 collumTextRodape1.setSimpleColumn(40, 580, 560, 780); //escreve o collumText no PDF collumTextRodape1.go(false); // cria um objeto que ir acomodar a o PdfContentByte ColumnText collumTextRodape2 = new ColumnText(rodape); //cria uma frase Phrase phraseRadape2 = new Phrase(); //adiciona fonte para a frase phraseRadape2.setFont(new com.itextpdf.text.Font(normal, 9.6f)); //adiciona a string que ir compor a frase phraseRadape2.add(textRodape2); //adicionar a frase no contener do PDF collumTextRodape2.addText(phraseRadape2); //dar uma identao de 30pt na primeira linha do collumText collumTextRodape2.setIndent(30); // escolhe alinhamento justificado para o objeto collumText collumTextRodape2.setAlignment(2); //justifica a primeira linha collumTextRodape2.setAdjustFirstLine(true); //posiciona o collumText na pgina 4 collumTextRodape2.setSimpleColumn(40, 580, 560, 680); //escreve o collumText no PDF collumTextRodape2.go(false); // cria um objeto que ir acomodar a o PdfContentByte ColumnText collumTextRodape3 = new ColumnText(rodape); //cria uma frase Phrase phraseRadape3 = new Phrase(); //adiciona fonte para a frase phraseRadape3.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseRadape3.add(textRodape3); //adicionar a frase no contener do PDF collumTextRodape3.addText(phraseRadape3); //dar uma identao de 30pt na primeira linha do collumText collumTextRodape3.setIndent(30); // escolhe alinhamento justificado para o objeto collumText collumTextRodape3.setAlignment(1); //justifica a primeira linha collumTextRodape3.setAdjustFirstLine(true); //posiciona o collumText na pgina 4 collumTextRodape3.setSimpleColumn(250, 460, 600, 560); //escreve o collumText no PDF collumTextRodape3.go(false); // cria um objeto que ir acomodar a o PdfContentByte ColumnText collumTextRodape4 = new ColumnText(rodape); //cria uma frase Phrase phraseRadape4 = new Phrase(); //adiciona fonte para a frase phraseRadape4.setFont(new com.itextpdf.text.Font(negrito, 9.6f)); //adiciona a string que ir compor a frase phraseRadape4.add(textRodape4); //adicionar a frase no contener do PDF collumTextRodape4.addText(phraseRadape4); //dar uma identao de 30pt na primeira linha do collumText collumTextRodape4.setIndent(30); // escolhe alinhamento justificado para o objeto collumText collumTextRodape4.setAlignment(1); //justifica a primeira linha collumTextRodape4.setAdjustFirstLine(true); //posiciona o collumText na pgina 4 collumTextRodape4.setSimpleColumn(25, 460, 200, 560); //escreve o collumText no PDF collumTextRodape4.go(false); stamper.close(); reader.close(); } private static String formataCNPJ(String cnpj) { String cnpjFormatado = cnpj.substring(0, 2) + "." + cnpj.substring(2, 5) + "." + cnpj.substring(5, 8) + "/" + cnpj.substring(8, 12) + "-" + cnpj.substring(12, 14); return cnpjFormatado; } public static String formataCPF(String cpf) { String cpfFormatado = cpf.substring(0, 3) + "." + cpf.substring(3, 6) + "." + cpf.substring(6, 9) + "-" + cpf.substring(9, 11); return cpfFormatado; } }