2008-11-26 19 views
7

¿Cómo puedo modificar las propiedades del documento PDF programáticamente usando el código .NET?Modificación de las propiedades del documento PDF

He comprado varios eBooks en formato PDF y, lamentablemente, los editores no han establecido las propiedades de Título, Autor y Asunto. Puede ver esto en un documento accediendo al cuadro de diálogo Propiedades del archivo y seleccionando la pestaña PDF. Esto es un verdadero dolor al intentar usar el eBook PDF en un dispositivo eReader.

No quiero tener que comprar un producto completo de PDF Writer para hacer esto, así que espero que alguien me indique una biblioteca gratuita que pueda usar para modificar las propiedades mediante programación.

Si no hay una biblioteca .NET disponible, agradecería cualquier otra técnica.

+0

Tuve el mismo problema hace un tiempo. Ver mi blog http://www.barcodeschool.com/2010/09/publishers-fix-the-metadata-in-the-pdf-file/ – cuteCAT

Respuesta

6

Gracias a ambos Mindaugas y Knobloch. Como ambos señalaron iTextSharp, fui por esto y pude resolver mi problema usando iTextSharp y un código similar al que se muestra a continuación. Una cosa que noté fue que el archivo resultante era 115,143 bytes más pequeño, desde un archivo inicial de 3,639,172, por lo que parece que estoy perdiendo alguna información o esta biblioteca es más eficiente que el producto original utilizado para crear el documento.

La otra cosa interesante es que al leer acerca de esta biblioteca seguía viendo enlaces a iText in Action que es publicado por la misma editorial de los libros electrónicos que estoy teniendo problemas con :-)

 using System.Diagnostics; 
     using iTextSharp.text.pdf; 
     using System.IO; 
     using System.Collections; 

     PdfReader pdfReader = new PdfReader(filePath); 
     using (FileStream fileStream = new FileStream(newFilePath, FileMode.Create, FileAccess.Write)) 
     { 
      string title = pdfReader.Info["Title"] as string; 
      Trace.WriteLine("Existing title: " + title); 

      PdfStamper pdfStamper = new PdfStamper(pdfReader, fileStream); 

      // The info property returns a copy of the internal HashTable 
      Hashtable newInfo = pdfReader.Info; 

      newInfo["Title"] = "New title"; 

      pdfStamper.MoreInfo = newInfo; 

      pdfReader.Close(); 
      pdfStamper.Close(); 
     } 
2

Docotic.Pdf library puede ser utilizado para una tarea como esta.

Aquí hay un ejemplo que muestra how to set PDF document properties. Es para un nuevo documento PDF, pero para cambiar las propiedades en un documento existente, solo debe usar otro constructor.

Descargo de responsabilidad: trabajo para Bit Miracle.

Cuestiones relacionadas