2008-11-26 192 views
7

如何使用.NET代碼以編程方式修改PDF文檔屬性?修改PDF文檔屬性

我已經購買了許多PDF格式的電子書,不幸的是,發佈商尚未設置標題,作者和主題屬性。您可以通過訪問文件「屬性」對話框並選擇「PDF」選項卡來在文檔上看到此內容。嘗試在電子閱讀器設備上使用PDF電子書時,這是一件非常痛苦的事情。

我不想購買完整的PDF Writer產品來做到這一點,所以我希望有人能指點我一個簡單的免費庫,我可以用它來以編程方式修改屬性。

如果沒有.NET庫可用我會很感激任何其他技術。

+0

前段時間我有同樣的問題。看我的博客http://www.barcodeschool.com/2010/09/publishers-fix-the-metadata-in-the-pdf-file/ – cuteCAT 2012-10-30 16:36:12

回答

6

由於雙方明道加斯和克諾布洛赫。既然你們都指向iTextSharp,我就這麼做了,並且能夠使用iTextSharp和類似於下面顯示的代碼來解決我的問題。我注意到的一件事是,結果文件比起始文件3,639,172小115,143字節,所以看起來我要麼丟失了一些信息,要麼這個庫比用於創建文檔的原始產品更高效。

另一個有趣的事情是,閱讀關於這個庫時,我總是看到鏈接到由我有:-)問題的電子書相同發行商發行iText in Action

 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(); 
     }