2008-11-26 8 views
7

Comment puis-je modifier les propriétés du document PDF par programmation à l'aide du code .NET?Modification des propriétés d'un document PDF

J'ai acheté un certain nombre de livres électroniques au format PDF et les éditeurs n'ont malheureusement pas défini les propriétés Titre, Auteur et Objet. Vous pouvez le voir sur un document en accédant à la boîte de dialogue Propriétés du fichier et en sélectionnant l'onglet PDF. C'est une vraie douleur lorsque vous essayez d'utiliser le livre numérique PDF sur un appareil eReader. Je ne veux pas avoir à acheter un produit PDF Writer complet pour ce faire, donc j'espère que quelqu'un peut me diriger vers une bibliothèque libre simple que je peux utiliser pour modifier les propriétés par programmation.

Si aucune bibliothèque .NET n'est disponible, j'apprécierais toute autre technique.

+0

J'ai eu le même problème il y a un moment. Voir mon blog http://www.barcodeschool.com/2010/09/publishers-fix-the-metadata-in-the-pdf-file/ – cuteCAT

Répondre

3

Avez-vous regardé iTextSharp? C'est une API PDF pour .Net. Vous pouvez faire des choses assez utiles avec des PDF en l'utilisant.

iTextSharp on Sourceforge

6

Merci à la fois Mindaugas et Knobloch. Comme vous avez tous les deux souligné iTextSharp je suis allé pour cela et a été en mesure de résoudre mon problème en utilisant iTextSharp et le code similaire à celui indiqué ci-dessous. Une chose que j'ai remarquée était que le fichier résultant était plus petit de 115,143 octets, à partir d'un fichier de départ de 3,639,172, donc il semble que je perds quelques informations ou que cette bibliothèque est plus efficace que le produit original utilisé pour créer le document.

L'autre chose intéressante est que lors de la lecture de cette bibliothèque, je continuais de voir des liens vers iText in Action qui est publié par le même éditeur des livres que je rencontre des problèmes avec :-)

 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 peut être utilisé pour une tâche comme celle-ci.

Voici un exemple qui montre how to set PDF document properties. C'est pour un nouveau document PDF, mais pour modifier les propriétés d'un document existant, il suffit d'utiliser un autre constructeur. Clause de non-responsabilité: Je travaille pour Bit Miracle.

Questions connexes