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.