Escrito em April 15th, 2009 as 1:26 am por

9 Comentários

Criar documentos de texto simples utilizando a biblioteca iTextSharp é muito rápido, fácil e não custa nada; afinal de contas ele é de distribuição gratuita.
Irei demonstrar como criar um documento pdf com iTextSharp em apenas 5 linhas. Isso mesmo, apenas 5 linhas de código são necessárias para gerar um arquivo pdf. Mas é claro que acabei adicionando mais do que 5 linhas, porque afinal de contas pequena quantidade de código não precisa ser pequena qualidade de código.
Segue abaixo o exemplo de como fazê-lo:

Na figura 1 está representado o formulário.

Figura 01

Figura 01

Abaixo podemos contemplar o código o obto na posição inicial.

using System;
using System.Windows.Forms;
namespace TextToPdf
{
    public partial class formTextoparaPdf : Form
    {
        public formTextoparaPdf()
        {
            InitializeComponent();
        }
        private void btnNovo_Click(object sender, EventArgs e)
        {
            this.txtTexto.Text = string.Empty;
        }
        private void btnConverter_Click(object sender, EventArgs e)
        {
            string msg = string.Empty;
            Pdf.Pdf pdf = new Pdf.Pdf();
            msg = pdf.TextoparaPdf(@"C:tmpteste.pdf", this.txtTexto.Text);
            MessageBox.Show(msg);
        }
    }
}

Abaixo o codigo fora feito em um projeto separado, apenas uma classe com todo o código df

using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
namespace Pdf
{
    public class Pdf
    {
        /// <summary>
        /// Converte um texto simples em um arquivo pdf
        /// </summary>
        /// <param name="Arquivo">Caminho e nome do arquivo pdf</param>
        /// <param name="Texto">Texto que será convertido em pdf</param>
        /// <returns></returns>
        public string TextoparaPdf(string Arquivo, string Texto)
        {
            string retorno = string.Empty;
            //Cria a instância o objeto documento.
            Document documento = new Document();
            try
            {
                //Cria o documento físico
                PdfWriter.GetInstance(documento, new FileStream(Arquivo, FileMode.Create));
                //Abre a instância do objeto documento
                documento.Open();
                //Adiciona o texto no documento
                documento.Add(new Paragraph(Texto));
                retorno = "Arquivo gerado com sucesso!";
                //Fecha o documento
                documento.Close();
            }
            catch (DocumentException de)
            {
                retorno = de.Message;
            }
            catch(IOException ioe)
            {
                retorno = ioe.Message;
            }
            catch(Exception e)
            {
                retorno = e.Message;
            }
            return retorno;
        }
    }
}

Caso haja alguma dúvida, por favor, coloque aqui seu post que terei o maior prazer em respondê-lo.

Se você gostou do post, deixe um comentário ou assine nosso RSS RSS.

Posts Relacionados:

  1. Criando um documento Pdf com iTextSharp – Parte II
  2. Criando um documento Pdf com iTextSharp – Parte III (Rotacionar Folha)
  3. Criando um documento Pdf com iTextSharp – Parte VI (Marca D´água)
  4. Criando um documento Pdf com iTextSharp – Parte V (MetaDados)
  5. Criando um documento Pdf com iTextSharp – Parte IV (Tamanho da Página)
  6. Criando um documento Pdf com iTextSharp – Parte VIII (Criptografia)
  7. Criando um documento Pdf com iTextSharp – Parte VII (Estilos)
, , ,

9 Respostas to “Criando um documento pdf com iTextSharp – Parte I”


  1. Bruno

    1 year ago

    Olá, muito bom tutorial!, tenho uma dúvida em relação da conversão de imagens pra pdf… tenho um relatório gráfico igual aquele do google analytcs (gerado em swf), como faço pra converte ele em .pdf?


  2. Guilherme Bacellar

    1 year ago

    Olá Bruno,
    se ele estiver em Flash, não é possível.

    O ideal seria converter em imagem (gif, jpg, etc) e embedar no pdf.


  3. igor rodrigues

    1 year ago

    Boa tarde!

    Eu queria colocar um botão no meu site em aspx que pegasse a tela toda e salvasse em pdf. ele tem uma sessão carregada de dados e está em c#.
    Tem como fazer isso?


  4. Guilherme Bacellar

    1 year ago

    Sim Igor, é possível.
    Contudo, você teria de escrever o código que gera o PDF com base nos dados presente na sessão.

    De forma automática, não conheço como.

    Obrigado,


  5. Natalia

    8 months ago

    Oi Guilherme! Muito bom o seu tutorial. Mas é o seguinte… preciso fazer um código que receba páginas de word diferentes de um determinado usuário e assim o sistema tem q juntar esses arquivos q vão ser carregadas em páginas diferentes e fazer que elas virem um trabalho mas em PDF. Tem como dar uma dica de como fazer isso?


  6. Pablo Roveroni

    8 months ago

    Oi Natália, este post é meu (Pablo), você tem duas alternativas, ou você cria uma aplicação para ler o documento do word, ou tentaria criar algo pra rodar dentro do word. Nunca tentei fazer isso, mas acho que vale como desafio.

    abs e obrigado,


  7. Marcelo Moreira

    6 months ago

    Utilizo a rotina abaixo para gerar PDF, o grande problema é que utilizo o FCKEditor componente que permite edição de texto via web. Ex: o usuário digita um texto a esquerda e coloca uma imagem a direita deste texto, ao invés de exibir no PDF exatamente assim, ele exibi o texto e depois na linha debaixo o texto alinhado a direita.

    Acredito que o erro esteja nesta linha:

    ArrayList array = HTMLWorker.ParseToList(tempReader, new StyleSheet());

    Como ele monta um array fica em linhas diferentes o texto e depois a imagem.

    Algum de voces tem alguma solução para isto?

    private void GeraPDFItextSharp(string html, string fileName, string author, string subject)

    {

    if (!string.IsNullOrEmpty(html) && !string.IsNullOrEmpty(fileName) &&

    !

    string.IsNullOrEmpty(author) && !string.IsNullOrEmpty(subject))
    {

    try
    {

    HttpContext.Current.Response.Clear();

    HttpContext.Current.Response.AddHeader(“content-disposition”, string.Format(“attachment;filename={0}.pdf”, fileName));

    HttpContext.Current.Response.Charset = string.Empty;

    HttpContext.Current.Response.ContentType = “application/pdf”;

    HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
    EnableViewState =

    true;

    int ContadorPagina = 1;

    Document document = new Document(PageSize.A4, 36, 36, 38, 30);

    PdfWriter pdfWriter = PdfWriter.GetInstance(document, HttpContext.Current.Response.OutputStream);
    document.AddAuthor(author);

    document.AddSubject(subject);

    document.Open();

    //Adiciona a marca d’gua
    iTextSharp.text.

    Image Topo = iTextSharp.text.Image.GetInstance(@”" + ConfigurationManager.AppSettings["Imagens"].ToString() + “/header_veirano_novo.jpg”);
    iTextSharp.text.

    Image Rodape = iTextSharp.text.Image.GetInstance(@”" + ConfigurationManager.AppSettings["Imagens"].ToString() + “/rodapeClipping.png”);
    document.SetPageSize(

    PageSize.A4);

    Paragraph ph = new Paragraph();
    ph.Add(

    new Chunk(“\n”));
    Topo.SetAbsolutePosition(36, 785);

    Rodape.SetAbsolutePosition(36, 10);

    document.Add(Topo);

    document.Add(ph);

    document.Add(Rodape);

    document.Add(ph);

    string tempFile = Path.GetTempFileName();

    using (StreamWriter tempwriter = new StreamWriter(tempFile, false))
    {

    tempwriter.Write(html);

    }

    using (StreamReader tempReader = new StreamReader(tempFile))
    {

    ArrayList array = HTMLWorker.ParseToList(tempReader, new StyleSheet());

    for (int i = 0; i < array.Count; i++)
    {

    document.Add((

    IElement)array[i]);

    if (pdfWriter.PageNumber != ContadorPagina)
    {

    Paragraph phi = new Paragraph();
    phi.Add(

    new Chunk("\n"));
    Topo.SetAbsolutePosition(36, 785);

    Rodape.SetAbsolutePosition(36, 10);

    document.Add(Topo);

    document.Add(phi);

    document.Add(Rodape);

    document.Add(phi);

    }

    ContadorPagina = pdfWriter.PageNumber;

    }

    }

    document.Close();

    pdfWriter.Close();

    File.Delete(tempFile);

    HttpContext.Current.Response.Flush();
    }

    catch (Exception ex)
    {

    throw ex;
    }

    }

    }


  8. Pablo Roveroni

    5 months ago

    Marcelo,

    desconheço este componente.
    Você não consegue criar um meio de fazer a intervenção antes de enviar o texto para o documento pdf?

1 Trackbacks For This Post

  1. Criando um documento Pdf com iTextSharp - Parte II | .Net Max Says:

    [...] documentos pdf com o iTextSharp, segue abaixo uma complementação para o código do post anterior (Criando um documento Pdf com iTextSharp – Parte I); no código abaixo está demonstrado como definir o tamanho e a cor de fundo da [...]

Deixa uma Resposta

znjdb32s6g