You are on page 1of 9

Gerando PDF em Java

1 de 9

http://www.softblue.com.br/blog/home/postid/7/GERANDO_PDF_EM_JAVA

<< 1/3 >>


Blog da Softblue

Cadastre o seu e-mail para


receber notcias e informaes
sobre novos cursos, sorteios e
outras novidades!

Este artigo foi criado por Carlos Eduardo Gusso Tosin.


Conhea o currculo completo do instrutor clicando aqui.

Gerando PDF em Java


Publicado em 24/05/2010 s 14:17:55 horas.

Diferenciais
Compartilhe:

O formato PDF muito utilizado porque se trata de uma forma fcil de distribuir documentos, alm de ser
possvel visualiz-los em qualquer plataforma.
Como documentos PDF so amplamente utilizados, existem diversas maneiras de ger-los. E claro que o Java
no poderia car de fora! Atravs do uso da API iText, voc pode criar seus prprios arquivos PDF atravs do
Java.
O objetivo deste artigo mostrar como gerar documentos PDF em Java, usando a API iText. Voc aprender
como congurar os elementos da pgina do documento, alm de como inserir textos, imagens e tabelas.

A API iText
O iText a API utilizada para gerar PDFs. Ela gratuita e open source. Para utilizar o iText em sua aplicao Java,
entre no site http://itextpdf.com e baixe o arquivo .JAR referente ao iText 5.0.2. Depois basta adicionar o iText ao
classpath da sua aplicao e utilizar as funcionalidades desta API, que vai possibilitar que voc gere os seus
documentos PDF. O iText funciona com a verso 5 do Java ou superior.
Documento
hora de comearmos a aprendar a usar o iText! E a primeira classe que voc deve conhecer a classe
Document. Ela representa o documento PDF, e para criar um documento PDF do tamanho A4 no modo retrato, o
cdigo ca assim:

Document doc = new Document(PageSize.A4);

A classe PageSize possui diversas constantes para tamanhos comuns de pginas (LETTER, NOTE, A0, A1, A2,
etc.). possvel tambm denir o tamanho manualmente, desta forma:

1
2

Mailing List

Liberdade total
Estude quando e como
quiser. Disponibilidade do
contedo 24h por dia, 7 dias
por semana.
Matrcula no expira
Pagamento nico, sem
mensalidades, e acesso
vitalcio a todo o contedo,
mesmo aps a concluso do
curso.
Cursos sempre atualizados
Acesso s atualizaes dos
cursos de forma automtica.
Tire suas dvidas
Suporte eciente para
esclarecer suas dvidas no
decorrer do curso.
Padro de qualidade
Atendimento diferenciado e
material de alta qualidade,
feito por quem entende do
assunto.

Rectangle rect = new Rectangle(595, 841);


Document doc = new Document(rect);

Neste caso, usada a classe Rectangle, que representa as dimenses de um retngulo.

Certicado

Sistema de medidas
importante destacar como funcionam as medidas utilizadas pelo iText. Se voc quiser especicar as medidas
das pginas dos documentos ou das margens, voc deve ter em mente que voc deve utilizar pontos. Como
estamos mais acostumados a trabalhar na escala mtrica, voc pode escrever um cdigo que faa a converso
da escala mtrica para pontos. A relao : 2,54cm = 72 pontos.
No exemplo anterior, o uso de 595x841 pontos dene as pginas do documento como tendo tamanho 21,0x29,7
cm, o que equivale ao tamanho A4.

Insira o cdigo do certicado


que deseja consultar:

Pagamento

Margens das Pginas

05/04/2014 00:21

Gerando PDF em Java

2 de 9

http://www.softblue.com.br/blog/home/postid/7/GERANDO_PDF_EM_JAVA

Para denir margens nas pginas do documento, basta que elas sejam especicadas no construtor da classe
Document, como feito a seguir:

Document doc = new Document(PageSize.A4, 72, 72, 72, 72);

Lembre-se de especicar as margens em pontos, e no no sistema mtrico! O cdigo acima dene que o
tamanho das pginas ser A4 com margens de 2,54cm na esquerda, direita, em cima e embaixo.
Preparando o documento para receber dados
Aps a criao do objeto que representa o documento, necessrio seguir mais alguns passos antes de
iniciarmos a insero dos dados. O cdigo que representa este passo mostrado a seguir:

1
2
3

OutputStream os = new FileOutputStream("out.pdf");


PdfWriter.getInstance(doc, os);
doc.open();

Vamos tentar entender o que mostrado neste cdigo. Primeiramente, devemos criar uma stream de sada,
indicando o destino do documento PDF. Neste caso estamos interessados em gerar o documento em um arquivo,
portanto criamos um FileOutputStream, indicando qual ser o nome do arquivo de sada.
Na sequncia, necessrio chamar o mtodo getInstance() da classe PdfWriter, para que ele associe o
documento stream de sada.
O ltimo passo antes de iniciarmos a criao do documento, abri-lo. Isto feito atravs da chamada ao mtodo
open(). importante que, ao nal da insero dos dados no documento, o mesmo seja fechado atravs do
mtodo close(). E outro detalhe importante: todas as modicaes no documento (como congurao de
margens e tamanho de pginas) devem ser feitas antes da chamada ao mtodo close().
Gerando seu primeiro PDF em Java
Agora voc j sabe tudo o que precisa para comear a escrever o seu primeiro arquivo PDF usando o iText. O
cdigo abaixo mostra um exemplo completo da gerao de um arquivo PDF simples, usando o que voc viu nesta
parte inicial:

01
02
03
04
05
06
07
08
09
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

import
import
import
import
import
import

java.io.FileOutputStream;
java.io.OutputStream;
com.itextpdf.text.Document;
com.itextpdf.text.PageSize;
com.itextpdf.text.Paragraph;
com.itextpdf.text.pdf.PdfWriter;

public class PrimeiroPDF {


public static void main(String[] args) throws Exception {
Document doc = null;
OutputStream os = null;
try {
//cria o documento tamanho A4, margens de 2,54cm
doc = new Document(PageSize.A4, 72, 72, 72, 72);
//cria a stream de sada
os = new FileOutputStream("out.pdf");
//associa a stream de sada ao
PdfWriter.getInstance(doc, os);
//abre o documento
doc.open();
//adiciona o texto ao PDF
Paragraph p = new Paragraph("Meu primeiro arquivo PDF!");
doc.add(p);
} finally {
if (doc != null) {
//fechamento do documento
doc.close();
}
if (os != null) {
//fechamento da stream de sada
os.close();
}
}
}
}

Este o esqueleto bsico de cdigo que voc ir utilizar ao criar seus arquivos PDF, mudando apenas o contedo.
Na sequncia voc ver mais detalhes sobre a classe Paragraph.

Textos
A forma mais fcil de adicionar textos ao PDF utilizar a classe Paragraph. Esta classe permite que voc
adicione blocos de texto ao documento. O texto inserido na pgina como se voc estivesse utilizando um editor
de textos. O iText respeita as margens que voc especicou para o documento e tambm gerencia
automaticamente as quebras de linha. Observe o cdigo abaixo, que gera dois blocos de texto como sada:

05/04/2014 00:21

Gerando PDF em Java

3 de 9

1
2
3
4
5

http://www.softblue.com.br/blog/home/postid/7/GERANDO_PDF_EM_JAVA

Paragraph p1 = new Paragraph("Meu primeiro arquivo PDF!");


doc.add(p1);
Paragraph p2 = new Paragraph("Estou utilizando a classe Paragraph para criar um
bloco de texto na gerao do meu primeiro arquivo PDF.");
doc.add(p2);

O construtor da classe Paragraph recebe o texto como parmetro. Depois basta chamar o mtodo add() para
adicionar o texto ao PDF.
Alterando a fonte
Nem sempre a fonte utilizada por padro pelo iText a fonte que voc deseja nos seus documentos. Logo,
possvel que voc altere a fonte dos textos que voc adiciona ao PDF.
A fonte representada pela classe com.itextpdf.text.Font. Basta criar um objeto desta classe com a
fonte desejada e associ-lo ao texto. Observe o exemplo:

Font f = new Font(FontFamily.COURIER, 20, Font.BOLD);

O cdigo acima cria uma fonte da famlia Courier, tamanho 20, itlica. O enum FontFamily e a classe Font
possuem tambm outras constantes para voc explorar.
A associao entre a fonte e o texto feita no construtor da classe Paragraph, desta forma:

Paragraph p1 = new Paragraph("Meu primeiro arquivo PDF!", f);

Pronto! Voc j tem um ttulo para o seu PDF! Observe como cou o resultado:

Alinhamento
Muitas vezes o alinhamento esquerda no o suciente. O iText proporciona outras formas de alinhamento do
texto. Observe:

p1.setAlignment(Element.ALIGN_CENTER);

O mtodo setAlignment() permite especicar um alinhamento para o bloco. Neste caso, p1 ser alinhado no
centro da linha. Observe:

Espaamento
Caso voc deseje ter um controle maior sobre o espaamento utilizado antes e depois de um bloco de texto,
voc pode utilizar os mtodos setSpacingBefore() e setSpacingAfter(). Observe:

p1.setSpacingAfter(20);

Neste exemplo, aps p1 ser adicionado ao documento, ser deixado um espao em branco extra de 20 pontos.
Observe:

05/04/2014 00:21

Gerando PDF em Java

4 de 9

http://www.softblue.com.br/blog/home/postid/7/GERANDO_PDF_EM_JAVA

Imagens
Da mesma forma que textos, imagens tambm podem ser inseridas no documento PDF. A maneira mais fcil de
fazer isto atravs da classe com.itextpdf.text.Image. Ela utilizada desta forma:

1
2
3

Image img = Image.getInstance("softblue.jpg");


img.setAlignment(Element.ALIGN_CENTER);
doc.add(img);

Basta chamar o mtodo getInstance() da classe, passando o caminho da imagem que deve ser carregada, e
depois adicionar a imagem ao documento atravs do mtodo add(). Os mtodos setAlignment(),
setSpacingBefore() e setSpacingAfter() j vistos anteriormente tambm podem ser aplicados s
imagens. Observe como ca o resultado:

Tabelas
O iText possui tambm suporte criao de tabelas. Observe uma tabela simples abaixo que contm algumas
palavras reservadas do Java:

O cdigo que gera a tabela acima o seguinte:

01
02
03
04
05
06
07
08
09
10
11

PdfPTable table = new PdfPTable(3);


PdfPCell header = new PdfPCell(new Paragraph("Algumas Palavaras Reservadas do
Java"));
header.setColspan(3);
table.addCell(header);
table.addCell("abstract");
table.addCell("extends");
table.addCell("import");
table.addCell("while");
table.addCell("if");
table.addCell("switch");
doc.add(table);

Vamos tentar entender o que signica este cdigo. Ao trabalhar com tabelas no iText, voc basicamente vai usar
duas classes: PdfPTable e PdfPCell. A primeira representa a tabela, enquanto a ltima representa uma clula
da tabela.
A chamada new PdfPTable(3) cria uma tabela com 3 colunas, de forma que a largura das colunas a mesma.
Veremos na sequncia como especicar larguras diferentes para cada coluna.
Depois criamos um objeto da classe PdfPCell, que ir representar o cabealho da nossa tabela. No construtor
do PdfPCell voc pode passar um objeto Paragraph contendo o texto que ser colocado na clula. Uma
caracterstica importante do cabealho que ele deve ocupar as 3 colunas da tabela. Por este motivo ns

05/04/2014 00:21

Gerando PDF em Java

5 de 9

http://www.softblue.com.br/blog/home/postid/7/GERANDO_PDF_EM_JAVA

usamos o mtodo setColspan(3).


Toda vez que desejamos adicionar uma clula tabela, chamamos o mtodo addCell(). Neste mtodo
podemos passar tanto objetos PdfPCell como os textos de cada clula diretamente (neste caso o prprio iText
gera o objeto PdfPCell internamente). Perceba que em nenhum momento voc diz em qual linha ou coluna da
tabela a clula ser inserida. O iText vai inserindo as clulas de cima para baixo e da esquerda para a direita. O
gerenciamento da criao de novas linhas feito de forma automtica.
Depois de preparar a tabela, basta adicion-la ao documento atravs da chamada doc.add(table).
Denindo a Largura das Colunas
Como vimos anteriormente, ao construirmos uma tabela informando apenas o nmero de colunas, o iText deixa
todas as colunas com o mesmo tamanho, o que nem sempre o ideal.
A melhor forma de especicar a largura das colunas da tabela usar a forma relativa. Ela funciona assim: voc
indica qual o tamanho da coluna com relao largura total da tabela. Observe:

PdfPTable table = new PdfPTable(new float[] { 0.2f, 0.2f, 0.6f });

Ao passar um array de nmeros no construtor da PdfPTable, voc est indicando um tamanho relativo para
cada coluna. Como o array tem 3 elementos, a tabela ter trs colunas. Agora voc deve pensar da seguinte
forma: todas as colunas da tabela juntas representam 100%. E, neste caso, a primeira coluna representa 20%, a
segunda 20% e a terceira 60%. Perceba que as duas primeiras colunas tero o mesmo tamanho, e a terceira
coluna ser trs vezes maior que cada coluna anterior. O resultado nal ca assim:

Mudando o tamanho e alinhamento da tabela


O iText permite tambm que voc especique qual o tamanho e o alinhamento da tabela com relao do
documento. Isto feito atravs dos mtodos setWidthPercentage() e setHorizontalAlignment().
Observe:

1
2

table.setWidthPercentage(60.0f);
table.setHorizontalAlignment(Element.ALIGN_RIGHT);

No exemplo acima, estamos denindo que a tabela deve ocupar apenas 60% da largura do documento. Tambm
estamos denindo que ela deve ser alinhada direita. Observe o resultado:

Customizando as bordas e cores


possvel tambm customizarmos as bordas das clulas e as cores das bordas e das clulas. Observe o cdigo
abaixo:

1
2
3
4

header.setBackgroundColor(BaseColor.YELLOW);
header.setBorderWidthBottom(2.0f);
header.setBorderColorBottom(BaseColor.BLUE);
header.setBorder(Rectangle.BOTTOM);

Ele gera como resultado:

05/04/2014 00:21

Gerando PDF em Java

6 de 9

http://www.softblue.com.br/blog/home/postid/7/GERANDO_PDF_EM_JAVA

O mtodo setBackgroundColor() dene a cor de fundo da clula. O mtodo setBorderWitdhBottom()


dene a largura da linha da borda inferior. O mtodo setBorderColorBottom() dene a cor da borda inferior.
E o mtodo setBorder() dene em que parte das clula a borda deve existir. Usando Rectangle.BOTTOM,
estamos denindo que existe apenas uma borda inferior na clula.
importante que voc saiba que existem variantes dos mtodos que denem a largura e cor da linha da borda.
Utilizamos neste exemplo os mtodo setBorderWidthBottom() e setBorderColorBottom(), para a borda
inferior, mas possvel tambm usar os mtodos equivalentes top, left e right (para borda superior,
esquerda e direita, respectivamente.

Concluso
Este artigo introduziu a API iText, usada para gerar documentos PDF em Java. O que est descrito aqui apenas
uma viso inicial de algumas funcionalidades importantes do iText. Mas muita coisa alm do que est descrito
aqui pode ser feita. Consulte a pgina ocial da API para ter maiores informaes.

Comentrios
bommesmo
Enviado em 30/12/2012 s 14:58:20 horas, por bom
Parabns, ajudou-me muito no meu trabalho da faculdade!! Obrigado!
Enviado em 14/11/2012 s 19:55:05 horas, por Jos Cordeiro
Andr, no sei o que pode estar acontecendo, pois nunca tive esse problema. Sugiro que voc procure na
documentao do iText, mais precisamente na classe Image, que deve ter alguma coisa por l. Abrao!
Enviado em 01/11/2012 s 13:31:12 horas, por Carlos Tosin
Bom dia a todos.
Ao adicionar uma imagem no pdf notei que a mesma est redimensionando (no cando no tamanho original)
como fao para deix-la no tamanho original ?
E parabns pelo tutorial muito til.
Enviado em 01/11/2012 s 10:44:53 horas, por Andr Souza
Bom artigo, mas lembrando que existe a opo de utilizar plugins nas IDE's como o Jasper e IReport que facilitam
muito a parte visual.
Enviado em 01/10/2012 s 15:01:56 horas, por Henrique
Muito bom mesmo o artigo. tudo o que eu precisava. Parabns pela apresentao e pela didtica.
Enviado em 05/09/2012 s 20:21:58 horas, por GALVANI LUPPI
timo tpico e perfeita explicao, ajudaram muito.
Obrigado.
Enviado em 03/09/2012 s 05:45:05 horas, por Maurcio Cayres
Danilo, no sei o que pode estar acontecendo. Apenas com estas informaes difcil saber. Se com o debug voc
no conseguiu descobrir, recomendo que voc grave algumas mensagens de log em arquivo para que o cdigo
que voc executa a partir do JAR d a voc mais informaes sobre o que est acontecendo. Abrao!
Enviado em 30/08/2012 s 16:42:07 horas, por Carlos Tosin
ola, estou com um problema dentro da ide que no caso e o netbeans funciona direitinho mas quando eu construo

05/04/2014 00:21

Gerando PDF em Java

7 de 9

http://www.softblue.com.br/blog/home/postid/7/GERANDO_PDF_EM_JAVA

gero o .jar ele chega ate a gerar o pdf


mas ca como se nao tivesse o documento em si eu ja depurei o cod ele trava quando chega na parte do
doc.close() os.close()
Enviado em 29/08/2012 s 11:19:08 horas, por danilo
Excelente tutorial, me ajudou, estava pesquisando sobre isso para o meu TCC e basicamente tudo que eu
precisava sobre salvamento de arquivos em PDF achei aqui, muito obrigado.
Enviado em 27/08/2012 s 20:18:04 horas, por Felipe
Bruno, essa questo da gerao do arquivo no est relacionada com o iText, mas sim com a prpria API de I/O do
Java. Se voc usar o FileOutputStream, o arquivo ser sobrescrito toda vez que voc executar o cdigo.
Existem outras opes tambm, ento recomendo que voc tente se familiarizar mais com a API de I/O. Abrao!
Enviado em 13/05/2012 s 22:01:29 horas, por Carlos Tosin
ol,
Criei um metodo atravez dessa classe, porem se o pdf foi criado uma vez, ele nao cria outro, tenho que exclui-lo
para assim conseguir gerar outro PDF.
Tem alguma solucao ?
Obrigado
Enviado em 13/05/2012 s 13:14:27 horas, por Bruno
Thiago, no existe uma forma certa ou errada de fazer. O que existe a forma que mais se adapta sua
necessidade, lembrando sempre que importante deixar o seu cdigo bem estruturado. Voc deve analisar isso
quando for integrar sua aplicao com o iText. Abrao!
Enviado em 25/04/2012 s 11:52:32 horas, por Carlos Tosin
Muito Obrigado pelo Tpico, Professor!
Estou Aprendendo a fundo mesmo a Linguagem java e Delphi , mas tenho uma dvida a seguinte : onde posso
colocar o cdigo acima dentro de um Evento de Um Boto em Aplicativo java , como por exemplo
ActionPerformed ?
Exemplo:
private void jButton1.ActionPerformed(java.awt.event.actionEvent evt) {
//o cdigo do iText aqui
}
Seria assim ou de outra maneira?
Enviado em 24/04/2012 s 19:51:31 horas, por Thiago Vincius dos Santos - Rio de Janeiro
Marcos, na hora de criar o FileOutputStream basta voc fornecer o caminho completo do arquivo como
parmetro (ex: C:\\Arquivos\\arquivo.pdf). Abrao!
Enviado em 14/04/2012 s 16:32:32 horas, por Carlos Tosin
muito bom seu artigo! mas eu queria saber como fao pra direcionar o pdf para uma pasta especica?
Enviado em 14/04/2012 s 14:27:29 horas, por marcos
alguem sabe ou tem um exemplo de gerar relatorio com o itext com valores do banco de dados?? por favor,
obrigado!
Enviado em 31/10/2011 s 17:04:40 horas, por Nathan
CARLOS, esta API faz apenas a gerao de PDFs. Recomendo que voc d uma procurada na internet atrs de
APIs que fazem o inverso. Abrao!
Enviado em 28/10/2011 s 13:49:36 horas, por Carlos Tosin
E como eu converto do pdf gerado para texto novamente?
Enviado em 28/10/2011 s 11:43:09 horas, por CARLOS
como eu posso deixar os elementos de uma tabela centrrializados.

05/04/2014 00:21

Gerando PDF em Java

8 de 9

http://www.softblue.com.br/blog/home/postid/7/GERANDO_PDF_EM_JAVA

Enviado em 05/10/2011 s 12:24:05 horas, por Julio Machado


Muito boa explicao. Valeu mesmo!!!
Enviado em 04/03/2011 s 22:17:57 horas, por Vtor
muito bom este artigo, s tenho uma pergunta, se eu quiser pegar vrios componentes de tela que esto dentro
de um JPanel, tambm possivel ?
Enviado em 11/01/2011 s 08:21:39 horas, por Diogo
Simplesmente juntar os bytes dos arquivos para formar um PDF s no possvel. Mas voc pode dar uma
investigada na API se existe a possibilidade de criar um novo documento e ir adicionando novas pginas, de forma
que cada pgina seja dos PDFs que voc quer juntar.
Enviado em 19/11/2010 s 17:03:13 horas, por Carlos Tosin
Tem como eu juntar todos esse pdf's gerados em apenas um? Me ajuda por favor.
Obrigado.
Enviado em 19/11/2010 s 12:49:13 horas, por Cassio
Ricardo, o mtodo getInstance() da classe Image pode receber um nome de uma imagem (como
mencionado no artigo), mas tambm pode receber um array de bytes. Basta voc fazer Image img =
Image.getInstance(bytes). O array de bytes pode ser a imagem armazernada no banco de dados, como
voc mencionou.
Enviado em 18/11/2010 s 23:33:35 horas, por Carlos Tosin
Como eu posso adicionar uma imagem em um pdf que est no Banco de dados? e recuperado em byte[]?
Enviado em 18/11/2010 s 18:42:41 horas, por Ricardo rosa
O que foi explicado neste artigo gera o arquivo PDF no sistema de arquivos (no local desejado). Ento o arquivo
ca gravado l. Depois basta voc ir at ele e carreg-lo.
Enviado em 08/11/2010 s 20:53:04 horas, por Carlos Tosin
Muito boa a explicao, s queria saber,se quando voc usa este mtodo, ele j abre o arquivo PDF ao salv-lo?
Enviado em 08/11/2010 s 19:57:59 horas, por Janser Lemes
Professor Carlos, achei muito legal a dica de gerar PDF, e aproveitando eu deu uma olha no curso oferecido, e
assisti a aula de demonstrao e achei Show-de-bola... Estou muito interessado em adquirir os Cursos...
Aproveitando quero deixar uma dica de assunto a ser abordado pelo Blog: Digitalizao de imagens ou
documentos com Scanner.
Enviado em 20/07/2010 s 20:05:14 horas, por Mrcio
Ol estou a procura de um aplicativo que le pfd em celulares para Java, se alguem souber de algum ou tenha
desenvolvido algum favo e-mail para ricsurfpro@hotmail.com
Enviado em 24/05/2010 s 22:06:25 horas, por Ricardo
Ol Julio Cesar. Voc pode pegar dados sim de um banco de dados e gerar uma nota scal em PDF. Quanto ao
cdigo de barras, voc nem precisa da fonte do Windows que voc mencionou. O iText j tem suporte criao
de cdigos de barras. Voc diz o nmero e ele renderiza como cdigo de barras no PDF. Consulte a documentao
do iText para mais informaes sobre essa funcionalidade. J usei na prtica num sistema real e funciona bem!
Enviado em 24/05/2010 s 18:44:05 horas, por Carlos Tosin
Muito Bom Professor. Posso tambm pegar arquivos do banco de dados e colocar no pdf. Exemplo uma nota
scal....
Pode ser chamado por um servlet para gerar na web... Ele pega as fontes do windows... Por exemplo se eu por a
fonte de barras..d pra gerar o codigo de barras...Se sim resolver meus problemas..
Enviado em 24/05/2010 s 18:07:19 horas, por Julio Cesar
Usando apenas o iText, no possvel. Existe uma API chamada POI, feita pela Apache (http://poi.apache.org) que
permite a leitura e escrita de documentos do Microsoft Word. Da d para tentar criar alguma aplicao Java que

05/04/2014 00:21

Gerando PDF em Java

9 de 9

http://www.softblue.com.br/blog/home/postid/7/GERANDO_PDF_EM_JAVA

use o POI para ler um .doc e use o iText para gerar o PDF.
Enviado em 24/05/2010 s 16:29:10 horas, por Carlos Tosin
Muito boa a explicao. Parabns.
Uma pergunta com esta API no possvel buscar um documento .doc por exemplo, e transform-lo em PDF?
Enviado em 24/05/2010 s 16:10:40 horas, por Mlory Zolino

Cursos | Perguntas | Sobre ns | Sorteios | Blog | Poltica de Privacidade | Contato

Desde 2003. Todos os direitos reservados

05/04/2014 00:21

You might also like