Escrito em April 17th, 2009 as 6:54 pm por

5 Comentários

Algumas vezes é necessário gerarmos um pdf com o estilo da página como paisagem (landscape). Veja só, quando eu digo que gerar documentos pdf com o iTextSharp é muito fácil, rápido e de graça, ninguém acredita. Logo abaixo está o códgio que demonstra como gerarmos um documento com uma página no layout paisagem. Note que para rotacionar a página e deixá-la como landscape, basta utilizarmos o método Rotate(). Perceba ainda que estamos utilizando o tamanho padrão da página como A4, dê uma navegada pela propriedade de PageSize e você encontrará uma série de tamanhos padrão. Veja só, esse carinha é tão legal pra nós que, não precisamos nem ficar nos preocupando com o tamanho em unidades de medida de tamanho de folha; ele já tem nos traz os mais utilizados; mas nada nos impede de utilizarmos tamanhos personalizados.

        /// <summary>
        /// Criando um documento no formato de folha "Retrato".
        /// </summary>
        /// <param name="Arquivo"></param>
        /// <param name="Texto"></param>
        /// <returns></returns>
        public string TextoToPdfFormatoRetrato(string Arquivo, string Texto)
        {
            string retorno = string.Empty;
            //Cria o objeto documento do tamanho A4 e Rotaciona o documento
            Document documento = new Document(PageSize.A4.Rotate());
            try
            {
                //Escreve o texto no documento e cria-o fisicamente
                PdfWriter.GetInstance(documento, new FileStream(Arquivo, FileMode.Create));
                //Abre o documento
                documento.Open();
                //Escreve a frase no documento textio
                documento.Add(new Phrase(Texto));
                //Fecha o documento
                documento.Close();
                retorno = "Arquivo gerado com sucesso!";
            }
            catch(DocumentException e)
            {
                retorno = e.Message;
            }
            catch(IOException e)
            {
                retorno = e.Message;
            }
            catch(Exception e)
            {
                retorno = e.Message;
            }
            return retorno;
        }
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 IV (Tamanho da Página)
  3. Criando um documento pdf com iTextSharp – Parte I
  4. Criando um documento Pdf com iTextSharp – Parte VI (Marca D´água)
  5. Criando um documento Pdf com iTextSharp – Parte V (MetaDados)
  6. Criando um documento Pdf com iTextSharp – Parte VII (Estilos)
  7. Criando um documento Pdf com iTextSharp – Parte VIII (Criptografia)
, , ,

5 Respostas to “Criando um documento Pdf com iTextSharp – Parte III (Rotacionar Folha)”


  1. Bianca

    1 year ago

    Olá estou utilizando o iTextSharp, mas estou com um probleminha segue parte do codigo:

    Rectangle pageSize = new Rectangle(592, 215);
    Document pdf = new Document(pageSize, 51, 39, 0, 0);

    então é a impressão de um cheque, so que quando vou imprimir ao inves de imprimir como retrato ele imprime como paisagem, eu preciso manter o tamanho da pagina de (592, 215) como esta, mas preciso que imprima como retrato, vc pode me ajudar, já tentei várias formar mas continua como paisagem…

    Obrigada.


  2. 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;
    }

    }

    }


  3. Junior

    5 months ago

    Olá existe algum método de gerar padf a partir de uma página??? OU seja pegando o arquivo html???


  4. Pablo Roveroni

    5 months ago

    Junior,

    existe sim.
    Acredito que no seu caso bastaria “imprimir” o documento como pdf. Existem algumas aplicações/bibliotecas prontas por aí que fazem isso; sem a necessidade de você ficar escrevendo milhões e milhões de linha de código.
    Também dá pra ser feito com o iTextSharp, mas sinceramente não encontrei nada por aqui.


  5. Marcos Paulo

    5 months ago

    Bom Dia Pablo… consegui gerar o PDF tranquilo, sem problemas, minha única dúvida é o seguinte, exportei os dados do PDF de um GridView gerado com uma
    certa formatação, tem como exportar para PDF esse gridview exatamente como
    ele é, com as cores das tabelas e tal, ou o iTextSharp só exporta preto e branco e nada mais! fica minha dúvida, se souber alguma coisa agradeço a ajuda!
    Abraço!!

Deixa uma Resposta

znjdb32s6g