为什么在iTextSharp中更新我的pdf的元数据总是将'subject'附加到'keywords'的末尾?

时间:2013-07-18 20:22:24

标签: c# pdf itextsharp

我正在对一堆PDF文件中的元数据进行批量更新,并且出于某种原因,主题始终被附加到关键字元数据的末尾。即使我删除了“关键字”更新,我在更新数据时仍会更新。

这是预期的吗?有没有其他人见过这个?

private void ProcessWithITextSharp(string sourceFile, string destFile) {

iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader( sourceFile );
FileStream fs = new FileStream( destFile, FileMode.Create, FileAccess.Write, FileShare.None );
PdfStamper stamper = new PdfStamper( reader, fs );

Dictionary<string, string> info = reader.Info;

// title
UpdateValueInInfoDictionary( info, "Title", "My Ridiculous Title" );
UpdateValueInInfoDictionary( info, "Subject", "A Ridiculous Story" );
UpdateValueInInfoDictionary( info, "Author", "Mr. Ridiculous " );
UpdateValueInInfoDictionary( info, "Keywords", "A ridiculous story with a ridiculous title." );

stamper.MoreInfo = info;
stamper.Close();
fs.Close();

}

enter image description here

1 个答案:

答案 0 :(得分:0)

我今天做了类似的事情并遇到了同样的问题。 (开车送我疯了)如果您保存文件并重新打开它,您会注意到PdfReader的MetaData属性在保存之前仍然具有许多原始值。我通过在压模之后填入这三行来解决问题.MoreInfo = info;

MemoryStream ms = new MemoryStream();
XmpWriter xw = new XmpWriter(ms,info);
stamper.XmpMetadata = ms.GetBuffer();

并在顶部:

using System.IO;
using iTextSharp.text.xml.xmp;

希望这有助于下一个发现这个的人:)