Escrito em June 5th, 2009 as 5:19 pm por

11 Comentários

Adicionando marca d’água (Watermark)

Neste post demonstrarei como adicionar uma marca d’água no texto.
Siga os passos descritos e veja como é simples adicionar uma watermark no texto.

using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
public string PdfComMarcadAgua()
        {
            Document documento = new Document();
            try
            {
                //Escreve o arquivo no diretório
                PdfWriter.GetInstance(documento, new FileStream(@"C:\Parte6.pdf", FileMode.Create));
                //Informa a posição da marca d'água
                iTextSharp.text.Image watermark = iTextSharp.text.Image.GetInstance(@"C:\watermark.jpg");
                watermark.SetAbsolutePosition(120, 150);
                //Adicionando o cabeçalho que será exibido na página 1
                HeaderFooter header = new HeaderFooter(new Phrase("Este é o cabeçalho"), false);
                documento.Header = header;
                //Abre o documento
                documento.Open();
                //Rotaciona a página a partir da página 2
                documento.SetPageSize(PageSize.A4.Rotate());
                //Adiciona a imagem ao documento
                documento.Add(watermark);
                //Adiciona o rodapé
                HeaderFooter footer = new HeaderFooter(new Phrase("Esta é a página: "), true);
                documento.Footer = footer;
                //Adicionando conteúdo ao documento
                documento.Add(new Paragraph("Olá mundo!!!"));
                //Adiciona uma nova página
                documento.Close();
            }
            catch (IOException e)
            {
                return e.Message;
            }
            catch (Exception e)
            {
                return e.Message;
            }
            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 VII (Estilos)
  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 I
  5. Criando um documento Pdf com iTextSharp – Parte III (Rotacionar Folha)
  6. Criando um documento Pdf com iTextSharp – Parte IV (Tamanho da Página)
  7. Criando um documento Pdf com iTextSharp – Parte VIII (Criptografia)
, ,

11 Respostas to “Criando um documento Pdf com iTextSharp – Parte VI (Marca D´água)”


  1. Leonardo

    2 years ago

    Fiz o que está sendo indicado no tutorial acima.
    A imagem foi adicionada, mas não como marca d’água, pois o texto foi escrito após a imagem, não por cima da mesma.


  2. Guilherme Bacellar

    2 years ago

    Leonardo,
    sua reclamação foi enviada para o autor e ele irá lhe responder.


  3. Pablo Roveroni

    2 years ago

    Leonardo,

    legal você ter escrito. Isso significa que o que escrevo está servindo para alguém.
    Bom…, mas vamos lá!
    Refiz o código passo a passo como no exemplo citado a cima e funcionou certinho. Será que você não está esquecendo nenhuma parte do código? É importante você atentar que a inserção da imagem deve ocorrer antes do texto, seja ele uma nova frase ou um novo parágrafo.

    Disponibilizei a nova biblioteca do iTextSharp e um código exemplo em http://www.dotnetmax.org/DNMBlog/wp-content/uploads/2009/08/MarcadAgua.rar

    Mas se mesmo assim você ainda continuar com problemas, entre em contato com a gente.

    abraço,

    Pablo Roveroni


  4. Carlos Sampaio

    1 year ago

    Pablo

    Estou gostando de ler os artigos e achei bem didatico, eu gostaria de saber se é possivel visualizar o arquivo em tempo de execução.
    Grato


  5. Marcelo

    1 year ago

    Muito bom esses seus artigos, estou precisando do itextsharp para passar alguns htmls para pdf e seus artigos me serviram muito. Mas ja pude perceber que ele não trabalha corretamente com algumas tags, como por ex: “” ele não fica 100%, então tive que criar um objeto datatable, popula-lo e depois adiciona-lo na string que ele passa pra pdf. você ja vivenciou e precisou contornar este ou outros problemas? se puder me responder ficarei grato. Estou te perguntando pois gostaria de saber se realmente é uma limitação do itextsharp ou se eu que não soube trabalhar com table nele… valeu…


  6. Pablo Roveroni

    1 year ago

    Obrigado Carlos.
    Infelizmente não conseguimos ver o arquivo em tempo de execução, pois criamos o arquivo, depois abrimos e criamos seu conteúdo e só quando fechamos o arquivo é que o liberamos para leitura.


  7. Pablo Roveroni

    1 year ago

    Marcelo,

    obrigado por acompanhar meus artigos, saber que alguém os lê é motivador e colocarei mais posts em breve.
    Quanto a sua dúvida, não entendi o problema, mas as aspas estão no html que você quer transformar para pdf e ele não deixa? É isso mesmo? Ainda não tive nenhum problema com ele; não que eu tenha notado ou que alguém tenha reclamado. Mas farei alguns testes e caso encontre alguma coisa deste tipo, farei um post sobre o assunto.
    Obrigado!


  8. Pablo Roveroni

    1 year ago

    Marcelo,
    acabei de efetuar testes com diversos caracteres e não encontrei problemas!
    Acredito que o problema pode ser na maneira como você está passando este caractere, lembre-se ele é um caractere reservado e é necessário usar \ para que não haja problema com este caractere.

  9. Olá Pablo,

    Gostei muito do post, consegui utilizar se código perfeitamente.
    Ma será que é possível fazer isso dentro de uma PdfPCell?

    Obrigado.


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

    }

    }


  11. MATEUS

    1 month ago

    ESTTOU CRIANDO UM JOGO E LA PEDE O URL DA IMAGEM O QUE E URL EU NAO SEI

Deixa uma Resposta

znjdb32s6g