SharePoint Online. Эскиз документа

SharePoint Online может создавать эскизы для документов в формате PNG. Это позволяет формировать миниатюры для предварительного просмотра документа.

Формирование эскизов основано на следующем обработчике:

/_layouts/15/getpreview.ashx

Поддерживаемые типы файлов

На сегодняшний день поддерживается 47 типов файлов: .wmv, .3gp, .3g2, .3gp2, .asf, .mts, .m2ts, .avi, .mod, .dv, .ts, .vob, .xesc, .mp4, .mpeg, .mpg, .m2v, .ismv, .mov, .m4v, .docm, .docx, .dotx, .dotm, .bmp, .jpg, .jpeg, .tiff, .tif, .png, .gif, .emf, .wmf, .psd, .svg, .ai, .eps, .pdf, .pptm, .pptx, .potm, .potx, .ppsm, .ppsx, .xlsm, .xlsx, .aspx

Получить список всех файлов, которые поддерживаются в тенанте можно, отправив следующий GET-запрос:

https://{tenant}.sharepoint.com/_layouts/15/getpreview.ashx?action=supportedtypes

Чтобы использовать генерацию эскизов необходимо идентифицировать документ.

Идентификация документа

Существует два способа идентифицировать документ, эскиз которого необходимо получить:

Способ #1. Предоставить три идентификатора: Коллекции сайтов (guidSite), Сайта (guidWeb) и самого документа (guidFile):

https://{tenant}.sharepoint.com/_layouts/15/getpreview.ashx?guidSite={GUID}&guidWeb={GUID}&guidFile={GUID}

Как получить эти параметры смотрите ниже.

Способ #2. Предоставить путь к документу. В этом случае три идентификатора, описанные выше, не нужны. Для генерации эскиза достаточно только пути к нему:

https://{tenant}.sharepoint.com/_layouts/15/getpreview.ashx?path={pathToTheDocument}

Размер эскиза

Размер эскиза основывается на ширине, его высота рассчитывается динамически. Для изменения ширины используйте параметр resolution. Возможные значения:

  • 0 - 300px
  • 1 - 480px
  • 2 - 750px
  • 3 - 1024px
  • 4 - 1600px
  • 5 - 2560px
  • 6 - Оригинальная ширина документа

Если параметр resolution не указан, то ширина эскиза будет равна 300px (значение по умолчанию). Если запрашиваемая ширина превышает оригинальную, то ширина эскиза будет равна оригинальной ширине документа.

Получение эскиза документа шириной 480 пикселей:

https://{tenant}.sharepoint.com/_layouts/15/getpreview.ashx?path={pathToTheDocument}&resolution=1

Множественные эскизы

Следующие типы документов могут содержать несколько эскизов: .pptm, .pptx, .potm, .potx, .ppsm, .ppsx.

Другими словами, есть возможность получить эскиз для любого слайда презентации, хранящейся в SharePoint Online.

Получение эскиза второго слайда презентации (параметр index):

https://{tenant}.sharepoint.com/_layouts/15/getpreview.ashx?path={pathToTheSlideDeck}&index=2

Кэш

SharePoint кэширует эскизы сроком на один час. Чтобы получить данные, игнорируя кэш, используйте параметр force:

https://{tenant}.sharepoint.com/_layouts/15/getpreview.ashx?path={pathToTheSlideDeck}&force=1

Параметры

Полный список параметров для формирования эскизов приведен в следующей таблице:

ПараметрОписание
actionНеобязательный. Может быть равен только "supportedtypes".
guidSiteОбязательные если указан параметр guidFile. Уникальные идентификатор (Guid) коллекции сайтов, на которой хранится документ.
guidWebОбязательные если указан параметр guidFile parameter provided. Уникальные идентификатор (Guid) сайта, на которой хранится документ.
guidFileОбязательные если НЕ указан параметр path. Уникальные идентификатор (Guid) документа.
pathОбязательные если НЕ указан параметр guidFile. Путь к документу.
resolutionНеобязательный. Размер эскиза.
clienttypeНеобязательный. Имя клиента. Используется только для логирования информации о запросе в ULS.
indexНеобязательный. Номер страницы. Применяется только для типов, поддерживающих множественные эскизы.
forceНеобязательный. Если параметр равен "1", то кэш будет проигнорирован.

Пример

Есть документ в моём разработческом тенанте:

В случае использования подхода с идентификаторами (Коллекция сайтов, Сайт, Документ) можно использовать объект _spPageContextInfo на стороне клиента для получения первых двух параметров (JavaScript):

var siteId = _spPageContextInfo.siteId;
var webId = _spPageContextInfo.webId;

Последний параметр (FileID) можно извлечь с помощью REST API.

GET: https://{tenant}.sharepoint.com/_api/web/lists/getbytitle('{libraryName}')/items({itemId})?$select=UniqueId

Ответ от сервера в моём случае следующий:

Итоговая конкатенация для получения URL'а (11 слайд презентации шириной 750 пикселей):

/_layouts/15/getpreview.ashx?guidSite=5875c999-2431-4dad-b9ba-8eb1ca3c34fa&guidWeb=8a928a87-dba1-4bfc-a2e9-067dd23cbc22&guidFile=e8ba1609-eaad-4467-afd8-c7070082383c&resolution=2&index=11

Как видно, второй подход гораздо удобней: единственный необходимый параметр - путь к документу.

В моём случае тот же результат можно получить с помощью следующего URL'а:

/_layouts/15/getpreview.ashx?path=/Shared%20Documents/Deck/Office%20365.pptx&resolution=2&index=11

SharePoint on-premise

Формирование эскизов недоступно для SharePoint on-premise. Даже если это SharePoint 2019.

Виталий Жуков

Виталий Жуков

Техлид, Архитектор, Разработчик, Microsoft MVP. Более 20 лет опыта в области системной интеграции и разработки программного обеспечения. Специализируюсь на проектировании и внедрении масштабируемых высокопроизводительных программных решений в различных отраслях.

Смотрите также

SharePoint Online. Получение изображения пользователя

SharePoint Online. Получение изображения пользователя

SharePoint Online. Форматирование столбцов

SharePoint Online. Форматирование столбцов

SharePoint Online теперь только IE11+

SharePoint Online теперь только IE11+