如何使用.NET代碼以編程方式修改PDF文檔屬性?修改PDF文檔屬性
我已經購買了許多PDF格式的電子書,不幸的是,發佈商尚未設置標題,作者和主題屬性。您可以通過訪問文件「屬性」對話框並選擇「PDF」選項卡來在文檔上看到此內容。嘗試在電子閱讀器設備上使用PDF電子書時,這是一件非常痛苦的事情。
我不想購買完整的PDF Writer產品來做到這一點,所以我希望有人能指點我一個簡單的免費庫,我可以用它來以編程方式修改屬性。
如果沒有.NET庫可用我會很感激任何其他技術。
如何使用.NET代碼以編程方式修改PDF文檔屬性?修改PDF文檔屬性
我已經購買了許多PDF格式的電子書,不幸的是,發佈商尚未設置標題,作者和主題屬性。您可以通過訪問文件「屬性」對話框並選擇「PDF」選項卡來在文檔上看到此內容。嘗試在電子閱讀器設備上使用PDF電子書時,這是一件非常痛苦的事情。
我不想購買完整的PDF Writer產品來做到這一點,所以我希望有人能指點我一個簡單的免費庫,我可以用它來以編程方式修改屬性。
如果沒有.NET庫可用我會很感激任何其他技術。
這裏是open-source PDF Libraries in C#
一對夫婦的其他庫的列表,不在名單上:
ByteScout-PDF
iTextSharp
你看iTextSharp的?這是一個適用於.Net的PDF API。您可以使用PDF進行一些相當有用的工作。
由於雙方明道加斯和克諾布洛赫。既然你們都指向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();
}
Docotic.Pdf library可能用於這樣的任務。
下面是一個顯示how to set PDF document properties的示例。這是一個新的PDF文檔,但要改變現有文檔中的屬性,應該只使用另一個構造函數。
聲明:我爲Bit Miracle工作。
前段時間我有同樣的問題。看我的博客http://www.barcodeschool.com/2010/09/publishers-fix-the-metadata-in-the-pdf-file/ – cuteCAT 2012-10-30 16:36:12