Criar arquivos PDF em Java iText

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380
Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/feltexco/public_html/felix/wp-content/plugins/wp-syntax/wp-syntax.php on line 380
Criar arquivos PDF Java iText
Olá amigos! Hoje iremos aprender como manipular arquivos PDF com o framework java iText. Sabemos que criar arquivos PDF em Java é uma atividade muito comum no desenvolvimento de sistemas.
iText é framework de código aberto para manipular arquivos PDF em Java. É amplamente adotado por outros frameworks como PrimeFaces (http://primefaces.org/), Struts (http://struts.apache.org/) e o gerador de relatórios JasperReport (http://community.jaspersoft.com/project/jaspersoft-studio).
Ambiente a ser configurado:
- Eclipse
- JDK 7
- iText 5.5.1
Para baixar o arquivo jar necessário para o projeto acesse o link direto no Repositório do Mavenaqui
Tarefas:
Criando o projeto web
Crie um novo projeto Java básico. E adicione a classe chamada “CriaPDF”. Adicione a essa classe o código abaixo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | package br.com.feltex.lab.pdf; import java.io.FileOutputStream; import com.itextpdf.text.Document; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfWriter; public class CriaPDF { public static void main(String[] arq) { try { // Criação do objeto que será um documento PDF Document documento = new Document(); // Faz o apontamento para o arquivo de destino PdfWriter.getInstance(documento, new FileOutputStream( "C:/novoPDF.pdf")); // Realiza a abertura do arquivo para escrita documento.open(); // Escreve uma mensagem no arquivo documento.add(new Paragraph("Alo mundo!")); // Fecha o arquivo após a escrita da mensagem documento.close(); } catch (Exception e) { e.printStackTrace(); } } } |
Não esqueça que é necessário adicionar o arquivo “iText-X.X.X.jar” ao seu projeto. Após a execução acesse o diretório informado na sua classe e abra o arquivo.
Ele deverá ter a seguinte linha:
Alo mundo!
Agora vamos incrementar a criação de PDF. Crie uma nova classe como nome “CriaNovoPDF” e adicione o código abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | package br.com.feltex.lab.pdf; import java.io.FileOutputStream; import java.util.Date; import com.itextpdf.text.Anchor; import com.itextpdf.text.BaseColor; import com.itextpdf.text.Chapter; import com.itextpdf.text.Document; import com.itextpdf.text.Element; import com.itextpdf.text.Font; import com.itextpdf.text.Paragraph; import com.itextpdf.text.Phrase; import com.itextpdf.text.Section; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; public class CriaNovoPDF { private static Font fonteCabecalho = new Font(Font.FontFamily.COURIER, 18, Font.BOLD); private static Font fontePadrao = new Font(Font.FontFamily.TIMES_ROMAN, 12); private static Font fonteVermelha = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.NORMAL, BaseColor.RED); private static Font negritoPequena = new Font(Font.FontFamily.HELVETICA, 10, Font.BOLD); public static void main(String[] arq) { try { System.out.println("Início"); // Criação do objeto que será um documento PDF Document documento = new Document(); // Faz o apontamento para o arquivo de destino PdfWriter.getInstance(documento, new FileOutputStream( "C:/ArquivoCompleto.pdf")); // Realiza a abertura do arquivo para escrita documento.open(); // Escreve uma mensagem no arquivo documento.add(new Paragraph("Alo mundo!!")); // Adicionando meta dados ao nosso arquivo documento.addTitle("Aqui está o título"); documento.addSubject("Agora temos um assunto no arquivo!"); documento.addKeywords("Java, PDF, iText"); documento.addAuthor("André Felix"); documento.addCreator("André Félix"); Paragraph conteudo = new Paragraph(); // Assim criaremos uma linha em branco conteudo.add(new Paragraph(" ")); conteudo.add(new Paragraph("Cabeçalho da página", fonteCabecalho)); // Pular nova linha conteudo.add(new Paragraph(" ")); // Will create: Report generated by: _name, _date conteudo.add(new Paragraph("Arquivo gerado por: Felix " + new Date(), negritoPequena)); conteudo.add(new Paragraph(" ")); conteudo.add(new Paragraph("Isso pode ser uma nota de rodape", negritoPequena)); // Adicionar nova página documento.newPage(); conteudo.add(new Paragraph( "Frase de atenção! Está em vermelha por destaque!", fonteVermelha)); // Adicionar nova página documento.newPage(); // Criação de um apontamento para um capítulo Anchor ancora = new Anchor("Capítulo 1", fontePadrao); ancora.setName("Capitulo 1"); // Capítulo do arquivo Chapter capitulo = new Chapter(new Paragraph(ancora), 1); Paragraph novoParagrafo = new Paragraph("Tabela de precos", negritoPequena); // Seção é uma área que adicionaremos conteúdo Section secao = capitulo.addSection(novoParagrafo); // Tabela com 3 colunas PdfPTable table = new PdfPTable(3); PdfPCell c1 = new PdfPCell(new Phrase("Cabecalho1")); c1.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(c1); c1 = new PdfPCell(new Phrase("Cabecalho 2")); c1.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(c1); c1 = new PdfPCell(new Phrase("Cabeçalho 3")); c1.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(c1); table.setHeaderRows(1); table.addCell("Banana"); table.addCell("Laranja"); table.addCell("Abacate"); table.addCell("2.1"); table.addCell("2.2"); // Serão criadas mais 10 células na tabela // a ordem será da esquerda para a direita de criação // ao final de cada linha uma nova célula será criada na próxima // linha for (int i = 0; i < 10; i++) { table.addCell("Céclula" + i); } secao.add(table); documento.add(conteudo); documento.add(secao); // Fecha o arquivo após a escrita da mensagem documento.close(); System.out.println("Fim"); } catch (Exception e) { e.printStackTrace(); } } } |
1 | Seu arquivo dever ser parecido com esse: |
Erros possíveis
Exception in thread "main" java.lang.Error: Unresolved compilation problems: Document cannot be resolved to a type Document cannot be resolved to a type PdfWriter cannot be resolved Paragraph cannot be resolved to a type at br.com.feltex.lab.pdf.CriaPDF.main(CriaPDF.java:16)
Este erro ocorre quando o arquivo jar do iText não está associado ao seu projeto. Para isso, no Eclipse, selecione o seu projeto com o botão direito >> Build Path >> Configure Build Path… >> Aba Libraries >> Clique no Botão “Add External JARs…” >> Localize o arquivo jar do iText que você fez o Download >> Abrir >> Ok. Pronto seu projeto já está com o arquivo do iText.
java.io.FileNotFoundException: C:\ArquivoCompleto.pdf (O arquivo já está sendo usado por outro processo) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.(FileOutputStream.java:221) at java.io.FileOutputStream. (FileOutputStream.java:110) at br.com.feltex.lab.pdf.CriaPDF.main(CriaPDF.java:37)
1. Verifique se seu arquivo está aberto. Caso esteja feche-o e execute novamente o projeto.
2. Verifique se há permissão de escrita na pasta que você deseja criar o arquivo.
Links relacionados
iText Site oficial
Deixe um comentário
Você precisa fazer o login para publicar um comentário.