C# Word和PDF文件中的文档属性

C# Word和PDF文件中的文档属性,c#,pdf,document,docx,gembox-document,C#,Pdf,Document,Docx,Gembox Document,我试图用从Word文件中读取特定属性,但在某些情况下,它可能不在文档中,因此出现错误 var document = DocumentModel.Load("ovl-last.docx"); var documentProperties = document.DocumentProperties; var ovldoctype = documentProperties.Custom["DocType"]; 在这个例子中,我注意到我们可以遍历属性。这是获取属

我试图用从Word文件中读取特定属性,但在某些情况下,它可能不在文档中,因此出现错误

var document = DocumentModel.Load("ovl-last.docx");
var documentProperties = document.DocumentProperties;
var ovldoctype = documentProperties.Custom["DocType"];
在这个例子中,我注意到我们可以遍历属性。这是获取属性和防止异常的唯一“安全”方法,还是有其他方法检查其存在

另外,当我将
DocumentModel
保存到PDF时,我注意到“PDF Producer”属性得到了一个硬编码的“GemBox.Document XYZ”值。我可以在:Adobe Reader->File->Properties…->高级->PDF制作程序

我可以将此更改为其他内容吗?

请注意和都是字典,因此您可以使用
TryGetValue
尝试检索“DocType”值,或者使用
ContainsKey
方法检查“DocType”键是否存在

例如,类似这样的事情:

var document = DocumentModel.Load("ovl-last.docx");
var documentProperties = document.DocumentProperties;
if (document.DocumentProperties.Custom.TryGetValue("DocType", out object ovldoctype))
{
    // ...
}
或者这个:

var document = DocumentModel.Load("ovl-last.docx");
var documentProperties = document.DocumentProperties;
if (document.DocumentProperties.Custom.ContainsKey("DocType"))
{
    var ovldoctype = documentProperties.Custom["DocType"];
    // ...
}
关于“PDF Producer”,请尝试添加“Producer”属性:

documentProperties.Custom.Add("Producer", "My value for PDF Producer");
document.Save("ovl-last.pdf");