Gerando arquivos PDF com .NET e iTextSharp

Olá pessoal!

Todos já tiveram alguma necessidade com PDF, seja para ler ou gerar arquivos através de aplicações C#.
Neste post vou demonstrar como gerar arquivos PDFs utilizando o famoso iTextSharp, além de uma exceção com a qual você pode se deparar. Não vou entrar muito em detalhes visto que a partir do código é possível obter uma idéia completa do que podemos fazer.

A primeira coisa que você deve fazer é baixar o assembly neste endereço e referenciá-lo no seu projeto. Alguns conceitos básicos são muito importantes para a geração de PDF:

1. PdfWriter
Todas as ações para gerar um PDF serão realizadas através de um objeto da classe PdfWriter.

2. Open()
Você deve abrir o documento para começar a editar.

3. writer.Add()
E deve adicionar elementos através do método Add do objeto PdfWriter.

Abaixo um exemplo direto em código para testes:

var retangulo = new Rectangle(765, 765);
var documento = new Document(retangulo); string nomeDoArquivo = Guid.NewGuid().ToString(); var writer = PdfWriter.GetInstance(documento, new FileStream(“…”, FileMode.Create)); documento.Open(); var rodape = new Rectangle(765, 85); rodape.BackgroundColor = new BaseColor(242, 242, 242); documento.Add(rodape); var imagemDoTopo = Image.GetInstance(“…”); imagemDoTopo.SetAbsolutePosition(0, 653); documento.Add(imagem); // Leitura de uma imagem por Stream – Não tem ligação direta com o PDF try { FileStream imagemAmbiente = System.IO.File.Create(“…”); byte[] buffer = new byte[8192]; int read; while ((read = stream.Read(buffer, 0, buffer.Length)) > 0) { imagemAmbiente.Write(buffer, 0, read); } imagemAmbiente.Close(); stream.Close();
} catch (Exception ex) {
logger.Inserir(ex.Message, Nbr.Framework.Log.ValueObjects.TipoLog.Erro);
throw; } var imagemSimulador = Image.GetInstance(“…”); imagemSimulador.SetAbsolutePosition(0, 130); documento.Add(imagemSimulador); var produto = new ProdutosRepository().ObterProdutoPeloGuid(codigoProduto); PdfContentByte cb = writer.DirectContent; BaseFont nomeProduto = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, false, false); cb.BeginText(); cb.SetFontAndSize(nomeProduto, 14); cb.SetColorFill(new BaseColor(238, 42, 115)); cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, produto.Nome, 50, 50, 0); cb.EndText(); BaseFont descricaoProduto = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, false, false); cb.BeginText(); cb.SetFontAndSize(descricaoProduto, 12); cb.SetColorFill(new BaseColor(51, 51, 51)); cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, produto.Descricao, 50, 35, 0); cb.EndText(); documento.Close();

Exceção possível

Em alguns casos você pode se deparar com a exceção “That assembly does not allow partially trusted callers”. Neste caso, basta baixar o código fonte do itextsharp no endereço já informado e recompilar o assembly com a instrução abaixo no AssemblyInfo.cs:

[assembly: AllowPartiallyTrustedCallers]

Abraços!

4 Comments

Comments have been disabled for this content.