2008-11-26 11 views
7

Wie kann ich die PDF-Dokumenteigenschaften programmgesteuert mit .NET-Code ändern?Ändern von PDF-Dokumenteigenschaften

Ich habe eine Reihe von eBooks im PDF-Format gekauft und leider haben die Verlage die Eigenschaften Titel, Autor und Thema nicht festgelegt. Sie können dies in einem Dokument sehen, indem Sie auf den Dialog Eigenschaften der Datei zugreifen und die Registerkarte PDF auswählen. Dies ist ein echter Schmerz, wenn Sie versuchen, das PDF-eBook auf einem E-Reader-Gerät zu verwenden.

Ich möchte nicht ein komplettes PDF Writer-Produkt kaufen, um dies zu tun, also hoffe ich, dass jemand mich auf eine einfache freie Bibliothek zeigen kann, die ich verwenden kann, um die Eigenschaften programmgesteuert zu ändern.

Wenn keine .NET-Bibliothek verfügbar ist, würde ich mich über jede andere Technik freuen.

+0

Ich hatte das gleiche Problem vor einer Weile. Siehe meinen Blog http://www.barcodeschool.com/2010/09/publishers-fix-the-metadata-in-the-pdf-file/ – cuteCAT

Antwort

3

Haben Sie bei iTextSharp geschaut? Es ist eine PDF-API für .Net. Sie können einige ziemlich nützliche Sachen mit PDFs tun, die es verwenden.

iTextSharp on Sourceforge

6

Dank sowohl Mindaugas und Knobloch. Da Sie beide auf iTextSharp zeigten, ging ich dafür und war in der Lage, mein Problem mit iTextSharp und Code ähnlich dem unten gezeigten zu lösen. Eine Sache, die ich bemerkte, war, dass die resultierende Datei 115.143 Bytes kleiner war, von einer Startdatei von 3.639.172, so dass es aussieht, als würde ich entweder Informationen verlieren oder diese Bibliothek ist effizienter als das ursprüngliche Produkt, das zum Erstellen des Dokuments verwendet wurde.

Die andere interessante Sache ist, dass, wenn man über diese Bibliothek zu lesen hielt ich Links zu iText in Action zu sehen, die vom gleichen Verlag der E-Books veröffentlicht, dass ich Probleme mit :-) habe

 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 sein kann für eine Aufgabe wie diese verwendet.

Hier ist ein Beispiel, das how to set PDF document properties zeigt. Es ist für ein neues PDF-Dokument, aber um Eigenschaften in einem vorhandenen Dokument zu ändern, sollte man einfach einen anderen Konstruktor verwenden.

Haftungsausschluss: Ich arbeite für Bit Miracle.