Свойства документа в файлах Word и PDF

#c# #pdf #document #docx #gembox-document

#c# #PDF #документ #docx #gembox-документ

Вопрос:

Я пытаюсь прочитать определенное свойство из файла Word с помощью GemBox.Документ, но в некоторых случаях его может не быть в документе, поэтому я получаю сообщение об ошибке.

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

В примере свойств документа я заметил, что мы можем перебирать свойства. Это единственный «безопасный» способ получить свойство и предотвратить исключение, или есть другой способ проверить его существование?

Кроме того, когда я сохраняю файл DocumentModel в формате PDF, я заметил, что получаю жестко запрограммированный «GemBox.Значение «Document XYZ» для свойства «PDF Producer». Я вижу это в: Adobe Reader -> Файл -> Свойства… -> Дополнительно -> Производитель PDF

Могу ли я изменить это на что-то другое?

Ответ №1:

Обратите внимание, что оба DocumentProperties.BuiltIn и DocumentProperties.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»:

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