Warning: Trying to access array offset on value of type bool in /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php on line 16

Warning: Trying to access array offset on value of type bool in /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php on line 16

Warning: Trying to access array offset on value of type bool in /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php on line 16

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758

Warning: Cannot modify header information - headers already sent by (output started at /home/feltexco/public_html/felix/wp-content/plugins/google-maps-ready/modules/options/models/options.php:16) in /home/feltexco/public_html/felix/wp-includes/rest-api/class-wp-rest-server.php on line 1758
{"id":884,"date":"2014-06-26T23:15:18","date_gmt":"2014-06-27T02:15:18","guid":{"rendered":"http:\/\/www.feltex.com.br\/felix\/?p=884"},"modified":"2014-07-31T13:52:56","modified_gmt":"2014-07-31T16:52:56","slug":"pdf-java-itext","status":"publish","type":"post","link":"https:\/\/www.feltex.com.br\/felix\/pdf-java-itext\/","title":{"rendered":"Criar arquivos PDF em Java iText"},"content":{"rendered":"

Criar arquivos PDF Java iText<\/H1><\/p>\n

Ol\u00e1 amigos! Hoje iremos aprender como manipular arquivos PDF com o framework java iText. Sabemos que criar arquivos PDF em Java \u00e9 uma atividade muito comum no desenvolvimento de sistemas.<\/p>\n

\"Criando<\/p>\n


\n iText <\/b> \u00e9 framework de c\u00f3digo aberto para manipular arquivos PDF em Java. \u00c9 amplamente adotado por outros frameworks como PrimeFaces (http:\/\/primefaces.org\/), Struts (http:\/\/struts.apache.org\/) e o gerador de relat\u00f3rios JasperReport (http:\/\/community.jaspersoft.com\/project\/jaspersoft-studio).<\/p>\n

Ambiente a ser configurado:<\/p>\n

    \n
  1. Eclipse<\/li>\n
  2. JDK 7<\/li>\n
  3. iText 5.5.1<\/li>\n<\/ol>\n

    Para baixar o arquivo jar necess\u00e1rio para o projeto acesse o link direto no Reposit\u00f3rio do Mavenaqui<\/a><\/p>\n

    Tarefas:
    \n

    Criando o projeto web<\/H2>
    \n Crie um novo projeto Java b\u00e1sico. E adicione a classe chamada “CriaPDF”. Adicione a essa classe o c\u00f3digo abaixo.<\/p>\n
    \r\npackage br.com.feltex.lab.pdf;\r\n\r\nimport java.io.FileOutputStream;\r\n\r\nimport com.itextpdf.text.Document;\r\nimport com.itextpdf.text.Paragraph;\r\nimport com.itextpdf.text.pdf.PdfWriter;\r\n\r\npublic class CriaPDF {\r\n\r\n\tpublic static void main(String[] arq) {\r\n\t\ttry {\r\n\r\n\t\t\t\/\/ Cria\u00e7\u00e3o do objeto que ser\u00e1 um documento PDF\r\n\t\t\tDocument documento = new Document();\r\n\t\t\t\/\/ Faz o apontamento para o arquivo de destino\r\n\t\t\tPdfWriter.getInstance(documento, new FileOutputStream(\r\n\t\t\t\t\t\"C:\/novoPDF.pdf\"));\r\n\t\t\t\/\/ Realiza a abertura do arquivo para escrita\r\n\t\t\tdocumento.open();\r\n\t\t\t\/\/ Escreve uma mensagem no arquivo\r\n\t\t\tdocumento.add(new Paragraph(\"Alo mundo!\"));\r\n\r\n\t\t\t\/\/ Fecha o arquivo ap\u00f3s a escrita da mensagem\r\n\t\t\tdocumento.close();\r\n\t\t} catch (Exception e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\r\n\t}\r\n}\r\n<\/pre>\n

    N\u00e3o esque\u00e7a que \u00e9 necess\u00e1rio adicionar o arquivo “iText-X.X.X.jar” ao seu projeto.<\/b> Ap\u00f3s a execu\u00e7\u00e3o acesse o diret\u00f3rio informado na sua classe e abra o arquivo.<\/p>\n

    Ele dever\u00e1 ter a seguinte linha:<\/p>\n

    \r\n   Alo mundo!\r\n<\/pre>\n

    Agora vamos incrementar a cria\u00e7\u00e3o de PDF. Crie uma nova classe como nome “CriaNovoPDF” e adicione o c\u00f3digo abaixo:<\/p>\n

    \r\npackage br.com.feltex.lab.pdf;\r\n\r\nimport java.io.FileOutputStream;\r\nimport java.util.Date;\r\n\r\nimport com.itextpdf.text.Anchor;\r\nimport com.itextpdf.text.BaseColor;\r\nimport com.itextpdf.text.Chapter;\r\nimport com.itextpdf.text.Document;\r\nimport com.itextpdf.text.Element;\r\nimport com.itextpdf.text.Font;\r\nimport com.itextpdf.text.Paragraph;\r\nimport com.itextpdf.text.Phrase;\r\nimport com.itextpdf.text.Section;\r\nimport com.itextpdf.text.pdf.PdfPCell;\r\nimport com.itextpdf.text.pdf.PdfPTable;\r\nimport com.itextpdf.text.pdf.PdfWriter;\r\n\r\npublic class CriaNovoPDF {\r\n\r\n\tprivate static Font fonteCabecalho = new Font(Font.FontFamily.COURIER, 18,\r\n\t\t\tFont.BOLD);\r\n\tprivate static Font fontePadrao = new Font(Font.FontFamily.TIMES_ROMAN, 12);\r\n\tprivate static Font fonteVermelha = new Font(Font.FontFamily.TIMES_ROMAN,\r\n\t\t\t12, Font.NORMAL, BaseColor.RED);\r\n\tprivate static Font negritoPequena = new Font(Font.FontFamily.HELVETICA,\r\n\t\t\t10, Font.BOLD);\r\n\r\n\tpublic static void main(String[] arq) {\r\n\t\ttry {\r\n\t\t\tSystem.out.println(\"In\u00edcio\");\r\n\r\n\t\t\t\/\/ Cria\u00e7\u00e3o do objeto que ser\u00e1 um documento PDF\r\n\t\t\tDocument documento = new Document();\r\n\t\t\t\/\/ Faz o apontamento para o arquivo de destino\r\n\t\t\tPdfWriter.getInstance(documento, new FileOutputStream(\r\n\t\t\t\t\t\"C:\/ArquivoCompleto.pdf\"));\r\n\t\t\t\/\/ Realiza a abertura do arquivo para escrita\r\n\t\t\tdocumento.open();\r\n\t\t\t\/\/ Escreve uma mensagem no arquivo\r\n\t\t\tdocumento.add(new Paragraph(\"Alo mundo!!\"));\r\n\r\n\t\t\t\/\/ Adicionando meta dados ao nosso arquivo\r\n\t\t\tdocumento.addTitle(\"Aqui est\u00e1 o t\u00edtulo\");\r\n\t\t\tdocumento.addSubject(\"Agora temos um assunto no arquivo!\");\r\n\t\t\tdocumento.addKeywords(\"Java, PDF, iText\");\r\n\t\t\tdocumento.addAuthor(\"Andr\u00e9 Felix\");\r\n\t\t\tdocumento.addCreator(\"Andr\u00e9 F\u00e9lix\");\r\n\r\n\t\t\tParagraph conteudo = new Paragraph();\r\n\t\t\t\/\/ Assim criaremos uma linha em branco\r\n\t\t\tconteudo.add(new Paragraph(\" \"));\r\n\r\n\t\t\tconteudo.add(new Paragraph(\"Cabe\u00e7alho da p\u00e1gina\", fonteCabecalho));\r\n\t\t\t\/\/ Pular nova linha\r\n\t\t\tconteudo.add(new Paragraph(\" \"));\r\n\r\n\t\t\t\/\/ Will create: Report generated by: _name, _date\r\n\t\t\tconteudo.add(new Paragraph(\"Arquivo gerado por: Felix \"\r\n\t\t\t\t\t+ new Date(), negritoPequena));\r\n\t\t\tconteudo.add(new Paragraph(\" \"));\r\n\t\t\tconteudo.add(new Paragraph(\"Isso pode ser uma nota de rodape\",\r\n\t\t\t\t\tnegritoPequena));\r\n\r\n\t\t\t\/\/ Adicionar nova p\u00e1gina\r\n\t\t\tdocumento.newPage();\r\n\r\n\t\t\tconteudo.add(new Paragraph(\r\n\t\t\t\t\t\"Frase de aten\u00e7\u00e3o! Est\u00e1 em vermelha por destaque!\",\r\n\t\t\t\t\tfonteVermelha));\r\n\r\n\t\t\t\/\/ Adicionar nova p\u00e1gina\r\n\t\t\tdocumento.newPage();\r\n\r\n\t\t\t\/\/ Cria\u00e7\u00e3o de um apontamento para um cap\u00edtulo\r\n\t\t\tAnchor ancora = new Anchor(\"Cap\u00edtulo 1\", fontePadrao);\r\n\t\t\tancora.setName(\"Capitulo 1\");\r\n\r\n\t\t\t\/\/ Cap\u00edtulo do arquivo\r\n\t\t\tChapter capitulo = new Chapter(new Paragraph(ancora), 1);\r\n\r\n\t\t\tParagraph novoParagrafo = new Paragraph(\"Tabela de precos\",\r\n\t\t\t\t\tnegritoPequena);\r\n\r\n\t\t\t\/\/ Se\u00e7\u00e3o \u00e9 uma \u00e1rea que adicionaremos conte\u00fado\r\n\t\t\tSection secao = capitulo.addSection(novoParagrafo);\r\n\r\n\t\t\t\/\/ Tabela com 3 colunas\r\n\t\t\tPdfPTable table = new PdfPTable(3);\r\n\r\n\t\t\tPdfPCell c1 = new PdfPCell(new Phrase(\"Cabecalho1\"));\r\n\t\t\tc1.setHorizontalAlignment(Element.ALIGN_CENTER);\r\n\t\t\ttable.addCell(c1);\r\n\r\n\t\t\tc1 = new PdfPCell(new Phrase(\"Cabecalho 2\"));\r\n\t\t\tc1.setHorizontalAlignment(Element.ALIGN_CENTER);\r\n\t\t\ttable.addCell(c1);\r\n\r\n\t\t\tc1 = new PdfPCell(new Phrase(\"Cabe\u00e7alho 3\"));\r\n\t\t\tc1.setHorizontalAlignment(Element.ALIGN_CENTER);\r\n\t\t\ttable.addCell(c1);\r\n\t\t\ttable.setHeaderRows(1);\r\n\r\n\t\t\ttable.addCell(\"Banana\");\r\n\t\t\ttable.addCell(\"Laranja\");\r\n\t\t\ttable.addCell(\"Abacate\");\r\n\t\t\ttable.addCell(\"2.1\");\r\n\t\t\ttable.addCell(\"2.2\");\r\n\r\n\t\t\t\/\/ Ser\u00e3o criadas mais 10 c\u00e9lulas na tabela\r\n\t\t\t\/\/ a ordem ser\u00e1 da esquerda para a direita de cria\u00e7\u00e3o\r\n\t\t\t\/\/ ao final de cada linha uma nova c\u00e9lula ser\u00e1 criada na pr\u00f3xima\r\n\t\t\t\/\/ linha\r\n\t\t\tfor (int i = 0; i < 10; i++) {\r\n\t\t\t\ttable.addCell(\"C\u00e9clula\" + i);\r\n\t\t\t}\r\n\r\n\t\t\tsecao.add(table);\r\n\t\t\tdocumento.add(conteudo);\r\n\t\t\tdocumento.add(secao);\r\n\r\n\t\t\t\/\/ Fecha o arquivo ap\u00f3s a escrita da mensagem\r\n\t\t\tdocumento.close();\r\n\t\t\tSystem.out.println(\"Fim\");\r\n\t\t} catch (Exception e) {\r\n\t\t\te.printStackTrace();\r\n\t\t}\r\n\t}\r\n}\r\n<\/pre>\n
    \r\n  Seu arquivo dever ser parecido com esse:\r\n<\/pre>\n\n