Criar arquivos PDF em Java iText

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.

Criando arquivos PDF com Java


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:

  1. Eclipse
  2. JDK 7
  3. 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