2008-11-26 14 views
7

Jak zmodyfikować właściwości dokumentu PDF programowo za pomocą kodu .NET?Modyfikowanie właściwości dokumentu PDF

Kupiłem kilka książek elektronicznych w formacie PDF i niestety wydawcy nie ustawili właściwości Tytuł, Autor i Temat. Możesz to zobaczyć w dokumencie, otwierając okno dialogowe Właściwości pliku i wybierając zakładkę PDF. Jest to prawdziwy problem przy próbie użycia e-Booka PDF na urządzeniu eReader.

Nie chcę mieć w tym celu pełnego produktu do tworzenia zapisów PDF, więc mam nadzieję, że ktoś może wskazać mi prostą, darmową bibliotekę, której mogę użyć do modyfikowania właściwości programowo.

Jeśli żadna biblioteka .NET nie jest dostępna, byłbym wdzięczny za każdą inną technikę.

+0

Miałem ten sam problem jakiś czas temu. Zobacz mój blog http://www.barcodeschool.com/2010/09/publishers-fix-the-metadata-in-the-pdf-file/ – cuteCAT

Odpowiedz

6

Dzięki zarówno Mendoga i Knobloch. Ponieważ obaj wskazywaliście iTextSharp, poszedłem do tego i udało mi się rozwiązać mój problem za pomocą kodu iTextSharp i kodu podobnego do pokazanego poniżej. Jedną z rzeczy, które zauważyłem, było to, że wynikowy plik był 115 145 bajtów mniejszy, z pliku początkowego 3 639 172, więc wygląda na to, że albo tracę jakieś informacje, albo ta biblioteka jest bardziej wydajna niż oryginalny produkt użyty do stworzenia dokumentu.

Drugą ciekawą rzeczą jest to, że po przeczytaniu o tej biblioteki Ciągle widząc linki do iText in Action opublikowanym przez tego samego wydawcę książek elektronicznych, że mam problemy z :-)

 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 może być używane do zadania takiego jak to.

Oto przykład przedstawiający how to set PDF document properties. Jest to dla nowego dokumentu PDF, ale aby zmienić właściwości w istniejącym dokumencie, należy po prostu użyć innego konstruktora.

Nota prawna: Pracuję dla Bit Miracle.

Powiązane problemy