> For the complete documentation index, see [llms.txt](https://gebra-it.gitbook.io/wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gebra-it.gitbook.io/wiki/client-api-reference/functions/createreport.md).

# createReport

Creates a report on the server and retrieves it to the client. The only format currently supported is PDF.

## Parameters

1. **reportControlId** - the id of the reportControl in your app. This can be invisible, if you don't need a preview.
2. **createOptions** - JSON Object with options
   * **print** - (bool, default = false) if set to true, this will trigger the print dialog after the report is create.
   * **archive** - (bool, default = false) if set to true, the report is saved as an attachment to the current record,
   * **saveFile** - if set. the report will be downloaded with a generic file name (gebra-suite-print.pdf), except, if saveFileName is set.
   * **saveFileName** - if set. the report will be downloaded with that file name.
   * **reportId** - (optional) if defined, this will overruled the reportId given for the control in the config editor. This is not the controlId, but the id (name) of the report definition
   * **cloudPrinter** - (optional) the created report will be send to the cloud printer right after creation.

Like a on a dataRequest, all controls of the current app will be automatically sent as report parameters, plus the recordId of the current record as "id", even if you don't have a control "id" in your app.

## Example Usages

```javascript
app.createReport("invoiceReport", { print: true }); //will create the invoiceReport as a pdf and prints it on the client side
```

```javascript
app.createReport("invoiceReport", {
  print: true,
  archive: true,
  documentTypeId: 1,
  saveFileName: "myPrint.pdf",
});
//will create the invoiceReport as a pdf and prints it on the client side, it will also save the pdf as an attachment to the current record.
```

```javascript
app.createReport("invoiceReport", {
  print: true,
  reportId: "invoiceReportSimple",
});
//In this case, we choose a different reportId
```

### Create a report and send it to a cloud printer

```javascript
app.createReport("invoiceReport", {
  cloudPrinter: "HP LaserJet",
});
```

### Return Values

The function returns a Promise that resolves to a Blob containing the PDF data if the server responds with a status code of 200. If the response status is different, the function resolves with undefined.
