【问题标题】:Document properties in Word and PDF filesWord 和 PDF 文件中的文档属性
【发布时间】:2021-02-16 20:58:16
【问题描述】:

我正在尝试使用 GemBox.Document 从 Word 文件中读取特定属性,但在某些情况下,它可能不在文档中,因此我收到错误消息。

var document = DocumentModel.Load("ovl-last.docx");
var documentProperties = document.DocumentProperties;
var ovldoctype = documentProperties.Custom["DocType"];

Document Properties 示例中,我注意到我们可以遍历属性。这是获取属性并防止异常的唯一“安全”方法,还是有其他方法来检查它的存在?

此外,当我将DocumentModel 保存到 PDF 时,我注意到我得到了“PDF Producer”属性的硬编码“GemBox.Document XYZ”值。我可以在以下位置看到它:Adobe Reader -> 文件 -> 属性... -> 高级 -> PDF Producer

我可以把它改成别的吗?

【问题讨论】:

    标签: c# pdf document docx gembox-document


    【解决方案1】:

    请注意DocumentProperties.BuiltInDocumentProperties.Custom 都是字典,因此您可以使用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");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 2011-12-24
      • 2013-09-25
      • 2015-07-24
      相关资源
      最近更新 更多