Экспорт отчёта в PDF
В этой статье рассмотрен процесс экспорта отчёта с помощью процессора отчётов FastReport Corporate Server.
Приступая к работе
Вам понадобятся следующие инструменты и возможности:
Знания по использованию API key в FastReport Corporate Server. Как получить и использовать API key можно узнать в статье Аутентификация и авторизация
В этой статье будет пропущена дополнительная информация по аутентификации и авторизации.
Инструмент curl.
Подойдёт любой другой REST клиент, но примеры будут построены для curl.
Отчёт.
Как построить отчёт можно узнать в статье Построение отчёта.
Активная подписка FastReport.Cloud.
Доступ в интернет.
Замечание
Обратите внимание, что экспорт отчёта можно сделать напрямую из шаблона, без промежуточного сохранения отчёта. Для этого выполните те же команды для шаблона отчёта, заменив Report в строках запроса на Template, также используете идентификатор шаблона, а не отчёта.
Инструкция
Вам будет необходим идентификатор отчёта для его экспорта в PDF. Сделайте
GETзапрос наhttps://fastreport.cloud/api/rp/v1/Report/Rootдля получения корневой директории.Пример запроса.
curl -X GET "https://fastreport.cloud/api/rp/v1/Reports/Root" -H "accept: text/plain"Пример ответа.
{ "name": "RootFolder", "parentId": null, "tags": null, "icon": null, "type": "Folder", "size": 16384, "subscriptionId": "5fa919fa292a8300019349bc", "status": "None", "id": "5fa919f9292a8300019349ba", "createdTime": "2020-11-09T10:29:13.993Z", "creatorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491", "editedTime": "0001-01-01T00:00:00Z", "editorUserId": null }Идентификатор директории из примера выше
5fa919f9292a8300019349ba.Получите список файлов в директории, для этого выполните
GETзапрос наhttps://fastreport.cloud/api/rp/v1/Reports/Folder/{id}/ListFiles?skip=0&take=10, где вместо{id}следует подставить идентификатор директории.Пример запроса.
curl -X GET "https://fastreport.cloud/api/rp/v1/Reports/Folder/5fa919f9292a8300019349ba/ListFiles?skip=0&take=10" -H "accept: text/plain"Пример ответа.
[ { "templateId": "5fc9ece6b792c90001d94b13", "reportInfo": null, "name": "awesome_report.fpx", "parentId": "5fa919f9292a8300019349ba", "tags": null, "icon": null, "type": "File", "size": 16927, "subscriptionId": "5fa919fa292a8300019349bc", "status": "Success", "id": "5fe4614bcd7c55000148e4c6", "createdTime": "2020-12-24T09:37:15.716Z", "creatorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491", "editedTime": "2020-12-24T09:37:15.716Z", "editorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491" } ]Идентификатор отчёта из примера выше
5fe4614bcd7c55000148e4c6.Для экспорта отчёта понадобится директория, в которую следует положить файл экспорта.
Получите корневую директорию экспортов, для этого сделайте
GETзапрос наhttps://fastreport.cloud/api/rp/v1/Exports/Root.Пример запроса.
curl -X GET "https://fastreport.cloud/api/rp/v1/Exports/Root" -H "accept: text/plain"Пример ответа.
{ "name": "RootFolder", "parentId": null, "tags": null, "icon": null, "type": "Folder", "size": 16384, "subscriptionId": "5fa919fa292a8300019349bc", "status": "None", "id": "5fa919fa292a8300019349bb", "createdTime": "2020-11-09T10:29:14.002Z", "creatorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491", "editedTime": "0001-01-01T00:00:00Z", "editorUserId": null }Идентификатор директории из примера выше
5fa919fa292a8300019349bb.Для экспорта отчёта сделайте
POSTзапрос наhttps://fastreport.cloud/api/rp/v1/Reports/File/{id}/Export, где вместо{id}следует подставить идентификатор отчёта.В теле запроса передайте JSON по схеме ниже.
{ "fileName": "awesome_result.pdf", "folderId": "5fa919fa292a8300019349bb", "locale": "en-GB", "format": "Pdf", "exportParameters": { "additionalProp1": {}, "additionalProp2": {}, "additionalProp3": {} } }folderId— идентификатор директории куда будет помещён экспорт. Если оставить пустым, то экспорт будет помещён в корневую папку для экспортов в подпискеfileName— название результирующего файла. Если не указать расширение, или указать его неправильно - сервер заменит его самостоятельно.locale— локализация экспортированного отчёта. Эта опция поменяет форматы даты и чисел, на те, что соответствуют выбранному ISO - коду культуры (например - французский (Швейцария) выглядит так - "fr-CH"). Если оставить это поле пустым или указать несуществующую культуру подставится локаль по умолчанию из подписки или английский (США), если локаль по умолчанию не указана.format— формат экспорта.exportParameters— параметры экспорта. Задаются аналогично параметрам экспорта из библиотеки FastReport .NET.
Пример запроса.
curl -X POST "https://fastreport.cloud/api/rp/v1/Reports/File/5fe4614bcd7c55000148e4c6/Export" -H "accept: text/plain" -H "Content-Type: application/json-patch+json" -d "{ \"fileName\": \"awesome_result.pdf\", \"folderId\": \"5fa919fa292a8300019349bb\", \"locale\":\"ru-RU\", \"format\": \"Pdf\"}"Пример ответа.
{ "format": "Pdf", "reportId": "5fe4614bcd7c55000148e4c6", "name": "awesome_result.pdf", "parentId": "5fa919fa292a8300019349bb", "tags": null, "icon": null, "type": "File", "size": 16384, "subscriptionId": "5fa919fa292a8300019349bc", "status": "InQueue", "id": "5fe46a33cd7c55000148e4c7", "createdTime": "2020-12-24T10:15:15.8039648+00:00", "creatorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491", "editedTime": "2020-12-24T10:15:15.8039697+00:00", "editorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491" }Обратите внимание на статус файла
InQueue, он означает, что была создана задача на экспорт и она попала в очередь построителя, уже на этом этапе файл получил свой идентификатор для работы5fe46a33cd7c55000148e4c7.Следует подождать некоторое время, пока экспорт будет построен.
Для получения информации об файле сделайте
GETзапрос наhttps://fastreport.cloud/api/rp/v1/Exports/File/{id}, где вместо{id}следует указать идентификатор экспорта.Пример запроса.
curl -X GET "https://fastreport.cloud/api/rp/v1/Exports/File/5fe46a33cd7c55000148e4c7" -H "accept: text/plain"Пример ответа.
{ "format": "Pdf", "reportId": "5fe4614bcd7c55000148e4c6", "name": "awesome_result.pdf", "parentId": "5fa919fa292a8300019349bb", "tags": null, "icon": null, "type": "File", "size": 41142, "subscriptionId": "5fa919fa292a8300019349bc", "status": "Success", "id": "5fe46a33cd7c55000148e4c7", "createdTime": "2020-12-24T10:15:15.803Z", "creatorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491", "editedTime": "2020-12-24T10:15:15.803Z", "editorUserId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491" }Обратите внимание на статус файла
Success. Отчёт был успешно экспортирован.Для скачивания отчёта сделайте
GETзапрос наhttps://fastreport.cloud/download/e/{id}, где вместо{id}следует передать идентификатор отчёта.Пример запроса.
curl -X GET "https://fastreport.cloud/download/e/5fe46a33cd7c55000148e4c7" -H "accept: text/plain"В ответе будет получен файл.