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;
}
}
Posts Relacionados:
- Criando um documento Pdf com iTextSharp – Parte II
- Criando um documento Pdf com iTextSharp – Parte VI (Marca D´água)
- Criando um documento pdf com iTextSharp – Parte I
- Criando um documento Pdf com iTextSharp – Parte III (Rotacionar Folha)
- Criando um documento Pdf com iTextSharp – Parte IV (Tamanho da Página)
- Criando um documento Pdf com iTextSharp – Parte VII (Estilos)
- Criando um documento Pdf com iTextSharp – Parte VIII (Criptografia)



5 Respostas to “Criando um documento Pdf com iTextSharp – Parte V (MetaDados)”
Bruno
1 year ago
Como obter as propriedades completas de um arquivos PDF usando o PDFReader?
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
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.
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,
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;
}
}
}