Escrito em May 8th, 2009 as 10:51 am por

5 Comentários

Inserindo Metadados

Neste post demonstrarei como criar um documento Pdf com metadados. Sempre haverá aquele que questionará o porquê de criarmos metadados, basta criar o arquivo, o resto não importa. Na verdade não é bem assim; importa sim. Dentre outras funcionalidades, com o advento dos “Desktop Search” seja do Windows, do Google ou qualquer outro, fica muito mais rápido você encontrar os arquivos que necessita quando você utilizar a função Localizar. Além do que eles dizem resumidamente do que se trata o arquivo.

Como podemos visualizar os metadados de um arquivo? É simples, basta clicarmos com o botão direito no arquivo e selecionar a opção Propriedades, clique na aba PDF e veja; as informações estarão lá.

Segue abaixo um exemplo de como criarmos um documento Pdf com metadados utilizando o iTextSharp.

public string TextoParaPdf5()
        {
            //Cria o objeto documento
            Document documento = new Document();
            try
            {
                //Escreve o arquivo pdf no disco baseado no documento
                PdfWriter.GetInstance(documento, new FileStream(@"C:Parte5.pdf", FileMode.Create));
                //Adiciona alguns metadados e abre o documento
                documento.AddTitle("Exemplo de título");
                documento.AddSubject("Este exemplo é a parte 5 de Como criar um documento PDF");
                documento.AddKeywords("Metadados, iTextSharp, Parte 5, Tutorial");
                documento.AddAuthor("Pablo Roveroni");
                documento.AddHeader("Como Criar PDFs Utilizando o iTextSharp - Parte V", "Teste");
                documento.Open();
                //Adiciona um parágrafo ao documento
                documento.Add(new Paragraph("Olá Mundo! Este é a quinta parte."));
                //Fecha o documento
                documento.Close();
                return "Arquivo criado com sucesso!";
            }
            catch (DocumentException e)
            {
                return e.Message;
            }
            catch (IOException e)
            {
                return e.Message;
            }
            catch (Exception e)
            {
                return e.Message;
            }
        }
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 VI (Marca D´água)
  3. Criando um documento pdf com iTextSharp – Parte I
  4. Criando um documento Pdf com iTextSharp – Parte III (Rotacionar Folha)
  5. Criando um documento Pdf com iTextSharp – Parte IV (Tamanho da Página)
  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 V (MetaDados)”


  1. Bruno

    1 year ago

    Como obter as propriedades completas de um arquivos PDF usando o PDFReader?


  2. Pablo Roveroni

    1 year ago

    Bruno,
    infelizmente não há uma fórmula mágica para pegar todas as propriedades de um arquivo pdf.
    Para obter as propriedades você terá que ir navegando pelo iTextSharp e ir decobrindo o que cada uma faz. Assim como eu tenho feito e colocado nos posts por aqui.
    Caso você descubra esta fórmula alquímica, por favor escreva um post e publicaremos aqui.

    Obrigado,

    Pablo


  3. Giovany

    1 year ago

    Boa Tarde,
    Gostaria de saber como adicionar em cada linha do pdf q eu criei,
    2 ou mais codigo de barras utilizando essa classe.
    Tentei de varias formas mas nao obtive sucesso.

    Att,
    Giovany.


  4. Guilherme Bacellar

    1 year ago

    Giovany, Obrigado por compartilhar sua dúvida conosco.

    O que me vem a mente, seria tentar converter os códigos de barras em imagem (gif ou jpg) e inserir no documento.

    Obrigado,


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

    }

    }

Deixa uma Resposta

znjdb32s6g