Экспорт отчёта в 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"
В ответе будет получен файл.