2015-06-09 2 views
2

Я использую библиотеку iTextSharp в моем проекте C# для чтения и редактирования PDF-документов. Теперь я хочу изменить название определенного pdf-документа. Я много искал об этой проблеме, но для меня ничего не работает. Best я нашел следующий:C#: iTextSharp, как я могу редактировать свойство title pdf-документа?

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

Но Visual Studio говорит, что System.Collection.Hashtable не могут быть преобразованы в неявной System.Collections.Generic.IDictionary<string,string>. Существует уже существующее преобразование.

Надеюсь, что кто-нибудь может мне помочь. Или есть другое решение с iTextSharp для редактирования названия.

ответ

5

Вы должны изменить это:

Hashtable newInfo = pdfReader.Info; 

Для этого:

Dictionary<string, string> newInfo = pdfReader.Info; 

Потому что, как говорит ошибка, pdfReader.Info возвращает ссылку на IDictionary<string, string>, а не Hashtable.

Обратите внимание, что если вы хотите изменить Info, нет необходимости создавать дополнительную локальную переменную:

var title = "Title"; 
if (pdfReader.Info.ContainsKey(title)) 
{ 
    pdfReader[title] = "NewTitle"; 
} 
Смежные вопросы