C#:iTextSharp,如何编辑pdf文档的title属性?

时间:2015-06-09 13:51:57

标签: c# pdf itextsharp

我在C#项目中使用 iTextSharp 库来阅读和编辑pdf文档。 现在我想更改某个pdf文档的标题。 我搜索了很多关于这个问题,但没有什么对我有用。 我发现的最好的是:

passed = {std::string} "<\022;\000�yA\000��(\000\001\000\000\000\200�(\000�\023@\000�\016;\000/\000\000 ...(I removed ~54,000 more characters from here for the sake of readability)"...<error: Cannot access memory at address 0x294000>

但Visual Studio表示无法将 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(); } 隐式转换为System.Collection.Hashtable。已有转化。

希望任何人都可以帮助我。或者使用iTextSharp的另一个解决方案来编辑​​标题。

1 个答案:

答案 0 :(得分: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";
}