Escrito em July 7th, 2009 as 11:30 am por

3 Comentários

Adicionando Estilos

Neste post demonstrarei como podemos adicionar estilos ao documento, é claro que a gama de estilos na qual podemos utilizar é muito maior das que aqui descrevo; cabe a você a dar uma olhada nas diversas opções que ele nos proporciona e nas infinitas combinações na quais nós podemos fazer.
O exemplo a seguir cria não um mas três arquivos com combinações diferentes das páginas. Contudo perceba que o conteúdo é o mesmo, ou seja, podemos criar uma série de documentos com diversas configurações de layout sem alterar o conteúdo.
Então chega de conversa e vamos ao código:

public string PdfComPreferencias()
{
    //Cria o objeto documento
    Document documento = new Document();
    try
    {
        //Cria o arquivo com o conteúdo do pdf-stream
        PdfWriter writerA = PdfWriter.GetInstance(documento, new FileStream(@"C:\PdfParte7a.pdf", FileMode.Create));
        PdfWriter writerB = PdfWriter.GetInstance(documento, new FileStream(@"C:\PdfParte7b.pdf", FileMode.Create));
        PdfWriter writerC = PdfWriter.GetInstance(documento, new FileStream(@"C:\PdfParte7c.pdf", FileMode.Create));
        //Informa seta as preferencias de cada um dos arquivos pdf
        writerA.ViewerPreferences = PdfWriter.PageLayoutTwoColumnLeft;
        writerB.ViewerPreferences = PdfWriter.HideMenubar | PdfWriter.HideToolbar;
        writerC.ViewerPreferences = PdfWriter.PageLayoutTwoColumnLeft | PdfWriter.PageModeFullScreen | PdfWriter.NonFullScreenPageModeUseThumbs;
        //Abre o documento
        documento.Open();
        //Adiciona a marca d'água
        Image watermark = Image.GetInstance(@"C:\watermark.jpg");
        watermark.SetAbsolutePosition(200, 340);
        documento.Add(watermark);
        //Adiciona o cabeçalho na página 1
        HeaderFooter cabecalho = new HeaderFooter(new Phrase("Este é o cabeçalho da página"), true);
        documento.Header = cabecalho;
        //Rotaciona a página a partir da página 2
        documento.SetPageSize(PageSize.A4.Rotate());
        //Reposiciona a marca d'água
        //Adiciona a marca d'água
        documento.Add(watermark);
        //Adiciona rodapé à página 2
        HeaderFooter rodape = new HeaderFooter(new Phrase("Página:  "), true);
        documento.Footer = rodape;
        //Adicionando conteúdo as páginas
        //Página 1
        documento.Add(new Paragraph("Olá Mundo!!!"));
        //Adiciona uma nova página
        documento.NewPage();
        //Página 2
        //Adicionando uma nova página
        documento.Add(new Paragraph("Olá planeta que o meteoro irá destruir!!!"));
        //Remove o header do início da página 3
        documento.ResetHeader();
        //Adiciona uma nova página
        documento.NewPage();
        //Página 3
        documento.Add(new Paragraph("Olá Explosão que vai matar todo mundo!!"));
        documento.Add(new Paragraph("Repare o cabeçalho já era!!!"));
        documento.Add(watermark);
        //Reseta a contagem das páginas
        documento.ResetPageCount();
        //Adiciona uma nova página
        documento.NewPage();
        //Página 4
        documento.Add(new Paragraph("Quem sabe os EUA não salvam o mundo?!?!?!"));
        documento.Add(new Paragraph("Repare que o número das páginas foi resetado!!!"));
    }
    catch (DocumentException e)
    {
        return e.Message;
    }
    catch (IOException e)
    {
        return e.Message;
    }
    catch (Exception e)
    {
        return e.Message;
    }
    //Fechar o documento
    documento.Close();
    return "Arquivo gerado com sucesso!!!";
}
Se você gostou do post, deixe um comentário ou assine nosso RSS RSS.

Posts Relacionados:

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

3 Respostas to “Criando um documento Pdf com iTextSharp – Parte VII (Estilos)”


  1. Besaleel

    1 year ago

    Legal, gostei dos exemplos bem simples, mas,… se eu quiser imprimir uma URL, que é mais interessante.
    Por exemplo, vamos dar mais utilidade a ferramenta iTextSharp:

    Eu tenho um relatório em HTML ( http://meusite.com/rel.aspx?id=91881 )
    quero disponibilizar esses dados em PDF.
    Como faço isso usando o iTextSharp?

    Não encontrei nenhuma referencia a URL na classe Documento.


  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. hermes handbags

    4 months ago

    You appear to be incredibly specialist in the way you write.

Deixa uma Resposta

znjdb32s6g