Caso você não tenha lido:
Parte 1
Parte 2
Explicações dadas, problemas resolvidos, vamos ao código.
Vou usar como texto a primeira parte do post.
Para usar o iTextSharp você precisa adicioná-lo às referências do seu projeto.
Abaixo um passo a passo:
Clique com o botão direito do mouse no seu namespace dentro do Solution Explorer.
No menu aberto, clique em Add Reference...
Uma nova janela será aberta. Nessa janela selecione, entre as abas na parte superior da janela, a aba Browse.
sexta-feira, 6 de maio de 2011
quarta-feira, 4 de maio de 2011
iTextSharp (parte 2) - PDF: Imagens e tabelas em C#
[update]
Gostaria de salientar que este post e o anterior contêm apenas explicações. Nada de código. Se, por algum motivo, houver preferência por ver apenas um código de exemplo do uso do iTextSharp, sugiro ir direto para o terceiro post, mas acho que a leitura das explicações pode ajudar bastante.
[/update]
Retomando o assunto de criação de pdf em C# com o iTextSharp.
Se você não está entendendo o que está acontecendo você provavelmente deveria começar a leitura pelo primeiro post.
Imagens
Para trabalhar com imagens eu usei combinações entre a classe System.Drawing.Image e a classe Image do iTextSharp.
Antes de mais nada é preciso entender que eu fiz uso de imagens que eu havia adicionado aos Recursos do meu projeto. Pra quem não souber como fazer é bom ver o post do blog que fala sobre isso. Pode acessar aqui.
Eis o que eu fiz a partir disso.
Defini um objeto System.Drawing.Image chamado imagemTemporaria.
Ele receberá cada imagem antes de passá-la para a classe Image do iTextSharp.
Serão duas imagens.
Primeiro eu instancio o objeto imagemTemporaria usando um new System.Drawing.Bitmap e passando a imagem que está nos Recursos como parâmetro.
Depois crio uma nova instância da classe Image do iTextSharp usando Image.GetInstance e passando por parâmetros o objeto imagemTemporaria e um objeto indicando o formato. Como no meu caso é um arquivo PNG, o segundo parâmetro será System.Drawing.Imaging.ImageFormat.Png.
Feito isso eu ajusto a propriedade Alignment da minha imagem.
Existem várias combinações possíveis, então não vou entrar em detalhes. Cada um pode fazer os testes necessários.
Eu farei uso da combinação Image.LEFT_ALIGN e Image.TEXTWRAP, usando o operador | de forma semelhante ao que é feito nos estilos para a classe Font, que eu mostrei nos post anterior.
Por fim ajusto a escala da imagem se necessário, utilizando o metódo ScalePercent, passando o valor percentual como parâmetro.
Repito isso para minhas duas imagens.
Gostaria de salientar que este post e o anterior contêm apenas explicações. Nada de código. Se, por algum motivo, houver preferência por ver apenas um código de exemplo do uso do iTextSharp, sugiro ir direto para o terceiro post, mas acho que a leitura das explicações pode ajudar bastante.
[/update]
Retomando o assunto de criação de pdf em C# com o iTextSharp.
Se você não está entendendo o que está acontecendo você provavelmente deveria começar a leitura pelo primeiro post.
Imagens
Para trabalhar com imagens eu usei combinações entre a classe System.Drawing.Image e a classe Image do iTextSharp.
Antes de mais nada é preciso entender que eu fiz uso de imagens que eu havia adicionado aos Recursos do meu projeto. Pra quem não souber como fazer é bom ver o post do blog que fala sobre isso. Pode acessar aqui.
Eis o que eu fiz a partir disso.
Defini um objeto System.Drawing.Image chamado imagemTemporaria.
Ele receberá cada imagem antes de passá-la para a classe Image do iTextSharp.
Serão duas imagens.
Primeiro eu instancio o objeto imagemTemporaria usando um new System.Drawing.Bitmap e passando a imagem que está nos Recursos como parâmetro.
Depois crio uma nova instância da classe Image do iTextSharp usando Image.GetInstance e passando por parâmetros o objeto imagemTemporaria e um objeto indicando o formato. Como no meu caso é um arquivo PNG, o segundo parâmetro será System.Drawing.Imaging.ImageFormat.Png.
Feito isso eu ajusto a propriedade Alignment da minha imagem.
Existem várias combinações possíveis, então não vou entrar em detalhes. Cada um pode fazer os testes necessários.
Eu farei uso da combinação Image.LEFT_ALIGN e Image.TEXTWRAP, usando o operador | de forma semelhante ao que é feito nos estilos para a classe Font, que eu mostrei nos post anterior.
Por fim ajusto a escala da imagem se necessário, utilizando o metódo ScalePercent, passando o valor percentual como parâmetro.
Repito isso para minhas duas imagens.
Marcadores:
arquivos,
biblioteca,
c#,
imagens,
iTextSharp,
pdf,
tabela
terça-feira, 3 de maio de 2011
iTextSharp (parte 1) - PDF: Criação de documento e adição de texto em C#
[update]
Gostaria de salientar que este post e o seguinte contêm apenas explicações. Nada de código. Se, por algum motivo, houver preferência por ver apenas um código de exemplo do uso do iTextSharp, sugiro ir direto para o terceiro post, mas acho que a leitura das explicações pode ajudar bastante.
[/update]
Nos próximos dias, a ideia é falar sobre criação de documentos em pdf.
Pra quem ainda não viu, um tempo atrás eu fiz um post sobre geração de arquivos do Excel.
A ideia aqui segue a mesma linha:
Eu precisava gerar um documento. A reação inicial foi: "Vou gerar um documento do Word, a biblioteca deve ser bem parecida com a do Excel". Mas então recebi a sugestão de trabalhar com '.pdf', já que pode ser aberto em um visualizador que é distribuído gratuitamente, ao contrário do '.doc' que usa o Word. Gostei da sugestão e fui pesquisar sobre bibliotecas para geração de pdf que eu pudesse integrar ao meu projeto em C#. Acabei encontrando o iTextSharp.
iTextSharp é uma biblioteca (ou um componente, se preferirem ver dessa forma) que permite fazer diversas operações com documentos pdf. Das várias possibilidades que encontrei na internet ele é com certeza um dos mais completos na área, embora ainda faltem alguns recursos que, em determinados momentos, poderiam ter sido extremamente úteis para mim. Mas nenhum grande transtorno.
Bom, a intenção, então, é falar sobre esse "cara", ou ao menos começar a falar.
Vejamos o que pretendo abordar nos próximos dias:
- Criação do documento em si, principais parâmetros.
- Principais observações sobre como adicionar, ao documento:
- Parágrafos, utilizando a classe Paragraph.
- Frases, utilizando a classe Phrase.
- Imagens (superficialmente).
- Abordagem rápida sobre como adicionar tabelas, mas com foco em demostrar os problemas que tive, e como os resolvi.
Eu mudei um pouco a ideia de como produzir os posts. Tenho preferido fazer uma explicação e depois deixar o código todo agrupado, ao invés de ter um parágrafo de explicação e um trecho de código, como nos primeiros posts. Embora isso deixe a explicação com uma aparência um pouco densa, acredito que o código agrupado é melhor. Em todo caso vou tentar separar a explicação em pequenos títulos dessa vez.
No último post eu colocarei apenas um código de exemplo. Embora me pareça ruim a ideia de o código estar separado do post acho que fica melhor organizado dessa forma.
Sobre o iTextSharp.
Ele é gratuito e você pode baixá-lo aqui, ou pela página abaixo:
http://sourceforge.net/projects/itextsharp/
Sobre o documento.
Criação do documento
Para a criação do documento em pdf será necessário fazer uso da classe Document em conjunto com o método GetInstance, da classe PdfWriter.
A classe Document pode ser instanciada sem parâmetros, com um Rectangle que representa o tamanho da página, ou com um Rectangle e as medidas das bordas (quatro objetos float).
No código irei mostrar o instanciamento com o tamanho da página e as bordas.
Feito isso será necessário iniciar uma sequência try/catch.
Dentro do try é feita a chamada ao PdfWriter.GetInstance, com 2 parâmetros: uma classe Document e uma FileStream. A classe Document é, obviamente, a que instanciamos antes do try e a FileStream pode ser instanciada ali mesmo, passando um nome para o arquivo e um FileMode.Create, como parâmetros.
Pode parecer meio sem sentido ficar escrevendo assim, mas com o código ficará claro. Ao menos é o que eu espero.
Gostaria de salientar que este post e o seguinte contêm apenas explicações. Nada de código. Se, por algum motivo, houver preferência por ver apenas um código de exemplo do uso do iTextSharp, sugiro ir direto para o terceiro post, mas acho que a leitura das explicações pode ajudar bastante.
[/update]
Nos próximos dias, a ideia é falar sobre criação de documentos em pdf.
Pra quem ainda não viu, um tempo atrás eu fiz um post sobre geração de arquivos do Excel.
A ideia aqui segue a mesma linha:
Eu precisava gerar um documento. A reação inicial foi: "Vou gerar um documento do Word, a biblioteca deve ser bem parecida com a do Excel". Mas então recebi a sugestão de trabalhar com '.pdf', já que pode ser aberto em um visualizador que é distribuído gratuitamente, ao contrário do '.doc' que usa o Word. Gostei da sugestão e fui pesquisar sobre bibliotecas para geração de pdf que eu pudesse integrar ao meu projeto em C#. Acabei encontrando o iTextSharp.
iTextSharp é uma biblioteca (ou um componente, se preferirem ver dessa forma) que permite fazer diversas operações com documentos pdf. Das várias possibilidades que encontrei na internet ele é com certeza um dos mais completos na área, embora ainda faltem alguns recursos que, em determinados momentos, poderiam ter sido extremamente úteis para mim. Mas nenhum grande transtorno.
Bom, a intenção, então, é falar sobre esse "cara", ou ao menos começar a falar.
Vejamos o que pretendo abordar nos próximos dias:
- Criação do documento em si, principais parâmetros.
- Principais observações sobre como adicionar, ao documento:
- Parágrafos, utilizando a classe Paragraph.
- Frases, utilizando a classe Phrase.
- Imagens (superficialmente).
- Abordagem rápida sobre como adicionar tabelas, mas com foco em demostrar os problemas que tive, e como os resolvi.
Eu mudei um pouco a ideia de como produzir os posts. Tenho preferido fazer uma explicação e depois deixar o código todo agrupado, ao invés de ter um parágrafo de explicação e um trecho de código, como nos primeiros posts. Embora isso deixe a explicação com uma aparência um pouco densa, acredito que o código agrupado é melhor. Em todo caso vou tentar separar a explicação em pequenos títulos dessa vez.
No último post eu colocarei apenas um código de exemplo. Embora me pareça ruim a ideia de o código estar separado do post acho que fica melhor organizado dessa forma.
Sobre o iTextSharp.
Ele é gratuito e você pode baixá-lo aqui, ou pela página abaixo:
http://sourceforge.net/projects/itextsharp/
Sobre o documento.
Criação do documento
Para a criação do documento em pdf será necessário fazer uso da classe Document em conjunto com o método GetInstance, da classe PdfWriter.
A classe Document pode ser instanciada sem parâmetros, com um Rectangle que representa o tamanho da página, ou com um Rectangle e as medidas das bordas (quatro objetos float).
No código irei mostrar o instanciamento com o tamanho da página e as bordas.
Feito isso será necessário iniciar uma sequência try/catch.
Dentro do try é feita a chamada ao PdfWriter.GetInstance, com 2 parâmetros: uma classe Document e uma FileStream. A classe Document é, obviamente, a que instanciamos antes do try e a FileStream pode ser instanciada ali mesmo, passando um nome para o arquivo e um FileMode.Create, como parâmetros.
Pode parecer meio sem sentido ficar escrevendo assim, mas com o código ficará claro. Ao menos é o que eu espero.
Assinar:
Postagens (Atom)


