<< Click to Display Table of Contents >> Объектная модель > Content – управление документами > ElectronicDocuments – документы > Versions – работа с версиями PublicBody – отображаемое представление для версии документа |
В некоторых случаях пользователь при открытии документа должен видеть не оригинальное содержимое документа, а его специализированное представление. Например, если документ пришел из сервиса обмена в формате XML, то для пользователя документ следует преобразовать в удобный для чтения формат, например, в PDF. Подробнее см. раздел «Договоры, счета на оплату, письма и прочие документы».
Другой пример – отметка об электронной подписи. Отметка об ЭП применяется к PDF-документу таким же образом, как печать – к бумажному документу. Такое представление удобнее для пользователя, т.к. он сразу видит и текст документа, и то, что документ подписан. При этом сам документ может храниться в формате, удобном для изменения, а не для просмотра. Например, в форматах doc, docx, xls, xlsx, ppt, pptx, txt, odt, ods.
Когда пользователь открывает документ для чтения или экспортирует его, то сначала проверяется значение свойства PublicBody. Если оно задано, то содержимое версии документа считывается из этого свойства. Если не задано, то из свойства Body. Редактирование, импорт и другие действия, изменяющие содержимое документа, недоступны, если задано свойство PublicBody.
При копировании документа или его версии с заданным свойством PublicBody копируется содержимое документа, а не отображаемое представление.
Свойства
Имя |
Тип |
Описание |
---|---|---|
Hash |
string |
Хеш бинарных данных |
Id |
Nullable<Guid> |
Идентификатор бинарных данных |
RootEntity |
IEntity |
Родительская сущность |
Size |
long |
Размер значения атрибута в байтах |
Storage |
Файловое хранилище, в котором находится содержимое версии документа |
Пример. Преобразование документа в формат PDF
Если нужно отобразить пользователю документ в формате, отличном от формата хранения документа, то прикладной разработчик пишет код. Код выполняет преобразование документа и заполняет предопределенное свойство PublicBody версии документа, а также приложение, ассоциированное с новым форматом.
// Для получения приложения-обработчика, с помощью которого откроется
// версия документа, используется метод GetByExtension().
var version = document.LastVersion;
using (var memoryStream = ConvertToPdf(version.Body))
{
version.PublicBody.Write(memoryStream);
version.AssociatedApplication = AssociatedApplications.GetByExtension("pdf");
document.Save();
}
В результате пользователь увидит документ в формате PDF, а не в том формате, в котором документ хранится в системе. Данный код можно использовать в функции или событии. Это зависит от того, когда именно нужно выполнить преобразование документа.
Примечание. В свойстве BodyAssociatedApplication хранится приложение, ассоциированное с исходным форматом документа (до означивания свойства PublicBody и переозначивания свойства AssociatedApplication). Свойство используется для восстановления исходного ассоциированного приложения при копировании версии документа, для которой задано отображаемое представление.
© Компания Directum, 2024 |