---
title: "Excel Export - Extra Content"
enterprise: true
framework: vue
version: "36.1.0"
---

# Excel Export - Extra Content

## Prepending and Appending Custom Content

The recommended way to prepend and append content, is by passing an array of ExcelCell objects to `prependContent` or `appendContent`. This ensures that the extra content is correctly escaped.

For compatibility with earlier versions of the Grid you can also pass a string, which will be inserted into the file without any processing. You are responsible for formatting the string correctly.

Note the following:

- You can check and uncheck the checkboxes to add extra content before and after the grid via the `prependContent` and `appendContent` properties.
- With `prependContent=ExcelRow[]` or `appendContent=ExcelRow[]`, custom content will be inserted containing commas and quotes. These commas and quotes will be visible when opened in Excel because they have been escaped properly.

#### Excel Export - Prepend and Append Content

```ts
import {
  createApp,
  defineComponent,
  onBeforeMount,
  ref,
  shallowRef,
} from "vue";
import { AgGridVue } from "ag-grid-vue3";
import "./styles.css";
import {
  ClientSideRowModelModule,
  ColDef,
  ColGroupDef,
  ExcelExportParams,
  ExcelRow,
  GridApi,
  GridOptions,
  GridReadyEvent,
  ModuleRegistry,
  NumberFilterModule,
  TextFilterModule,
  enableDevValidations,
} from "ag-grid-community";
import {
  ColumnMenuModule,
  ContextMenuModule,
  ExcelExportModule,
} from "ag-grid-enterprise";
import { IOlympicData } from "./interfaces";
if (process.env.NODE_ENV !== "production") {
  enableDevValidations();
}

ModuleRegistry.registerModules([
  TextFilterModule,
  NumberFilterModule,
  ClientSideRowModelModule,
  ExcelExportModule,
  ColumnMenuModule,
  ContextMenuModule,
]);

const getRows: () => ExcelRow[] = () => [
  { cells: [] },
  {
    cells: [
      {
        data: {
          value: 'Here is a comma, and a some "quotes".',
          type: "String",
        },
      },
    ],
  },
  {
    cells: [
      {
        data: {
          value:
            "They are visible when the downloaded file is opened in Excel because custom content is properly escaped.",
          type: "String",
        },
      },
    ],
  },
  {
    cells: [
      { data: { value: "this cell:", type: "String" }, mergeAcross: 1 },
      {
        data: {
          value: "is empty because the first cell has mergeAcross=1",
          type: "String",
        },
      },
    ],
  },
  { cells: [] },
];

const getBoolean = (inputSelector: string) =>
  !!(document.querySelector(inputSelector) as HTMLInputElement).checked;

const getParams: () => ExcelExportParams = () => ({
  prependContent: getBoolean("#prependContent") ? getRows() : undefined,
  appendContent: getBoolean("#appendContent") ? getRows() : undefined,
});

const VueExample = defineComponent({
  template: `
        <div style="height: 100%">
                <div class="container">
      <div class="columns">
        <label class="option" for="prependContent"><input type="checkbox" id="prependContent">Prepend Content</label>
        <label class="option" for="appendContent"><input type="checkbox" id="appendContent"> Append Content</label>
      </div>
      <div>
        <button v-on:click="onBtExport()" style="margin: 5px 0px; font-weight: bold">Export to Excel</button>
      </div>
      <div class="grid-wrapper">
        <ag-grid-vue
          style="width: 100%; height: 100%;"
          @grid-ready="onGridReady"
          :columnDefs="columnDefs"
          :defaultColDef="defaultColDef"
          :popupParent="popupParent"
          :rowData="rowData"></ag-grid-vue>
        </div>
      </div>
        </div>
    `,
  components: {
    "ag-grid-vue": AgGridVue,
  },
  setup(props) {
    const gridApi = shallowRef<GridApi<IOlympicData> | null>(null);
    const columnDefs = ref<ColDef[]>([
      { field: "athlete", minWidth: 200 },
      { field: "country", minWidth: 200 },
      { field: "sport", minWidth: 150 },
      { field: "gold" },
      { field: "silver" },
      { field: "bronze" },
      { field: "total" },
    ]);
    const defaultColDef = ref<ColDef>({
      filter: true,
      minWidth: 100,
      flex: 1,
    });
    const popupParent = ref<HTMLElement | null>(document.body);
    const rowData = ref<IOlympicData[]>(null);

    function onBtExport() {
      gridApi.value!.exportDataAsExcel(getParams());
    }
    const onGridReady = (params: GridReadyEvent) => {
      gridApi.value = params.api;

      const updateData = (data) =>
        (rowData.value = data.filter((rec: any) => rec.country != null));

      fetch("https://www.ag-grid.com/example-assets/small-olympic-winners.json")
        .then((resp) => resp.json())
        .then((data) => updateData(data));
    };

    return {
      gridApi,
      columnDefs,
      defaultColDef,
      popupParent,
      rowData,
      onGridReady,
      onBtExport,
    };
  },
});

const app = createApp(VueExample);
app.mount("#app");
```

[Live example: Excel Export - Prepend and Append Content](https://www.ag-grid.com/examples/excel-export-extra-content/excel-export-prepend-append/vue3)

## Export Cover Page

In addition to exporting the Grid in the Excel file, you can also provide additional content on a separate sheet of the Excel file. This can be useful when you'd like to add a cover page to provide your users additional details on the data in this file.

#### Excel Export - Cover Page

```ts
import {
  createApp,
  defineComponent,
  onBeforeMount,
  ref,
  shallowRef,
} from "vue";
import { AgGridVue } from "ag-grid-vue3";
import "./styles.css";
import {
  ClientSideRowModelModule,
  ColDef,
  ColGroupDef,
  CsvExportModule,
  ExcelStyle,
  GridApi,
  GridOptions,
  GridReadyEvent,
  ModuleRegistry,
  NumberFilterModule,
  enableDevValidations,
} from "ag-grid-community";
import {
  ColumnMenuModule,
  ContextMenuModule,
  ExcelExportModule,
  SetFilterModule,
} from "ag-grid-enterprise";
import { IOlympicData } from "./interfaces";
if (process.env.NODE_ENV !== "production") {
  enableDevValidations();
}

ModuleRegistry.registerModules([
  NumberFilterModule,
  ClientSideRowModelModule,
  CsvExportModule,
  ExcelExportModule,
  ColumnMenuModule,
  ContextMenuModule,
  SetFilterModule,
]);

const VueExample = defineComponent({
  template: `
        <div style="height: 100%">
                <div class="container">
      <div class="columns">
        <div>
          <button v-on:click="onBtExport()" style="font-weight: bold; margin-bottom: 5px">Export to Excel</button>
        </div>
      </div>
      <div class="grid-wrapper">
        <ag-grid-vue
          style="width: 100%; height: 100%;"
          @grid-ready="onGridReady"
          :defaultColDef="defaultColDef"
          :columnDefs="columnDefs"
          :excelStyles="excelStyles"
          :rowData="rowData"></ag-grid-vue>
        </div>
      </div>
        </div>
    `,
  components: {
    "ag-grid-vue": AgGridVue,
  },
  setup(props) {
    const gridApi = shallowRef<GridApi<IOlympicData> | null>(null);
    const defaultColDef = ref<ColDef>({
      filter: true,
      minWidth: 100,
      flex: 1,
    });
    const columnDefs = ref<ColDef[]>([
      { field: "athlete", minWidth: 200 },
      { field: "country", minWidth: 200 },
      { field: "sport", minWidth: 150 },
      { field: "gold", hide: true },
      { field: "silver", hide: true },
      { field: "bronze", hide: true },
      { field: "total", hide: true },
    ]);
    const excelStyles = ref<ExcelStyle[]>([
      {
        id: "coverHeading",
        font: {
          size: 26,
          bold: true,
        },
      },
      {
        id: "coverText",
        font: {
          size: 14,
        },
      },
    ]);
    const rowData = ref<IOlympicData[]>(null);

    function onBtExport() {
      const performExport = async () => {
        const spreadsheets = [];
        //set a filter condition ensuring no records are returned so only the header content is exported
        await gridApi.value!.setColumnFilterModel("athlete", {
          values: [],
        });
        gridApi.value!.onFilterChanged();
        //export custom content for cover page
        spreadsheets.push(
          gridApi.value!.getSheetDataForExcel({
            prependContent: [
              {
                cells: [
                  {
                    styleId: "coverHeading",
                    mergeAcross: 3,
                    data: { value: "AG Grid", type: "String" },
                  },
                ],
              },
              {
                cells: [
                  {
                    styleId: "coverHeading",
                    mergeAcross: 3,
                    data: { value: "", type: "String" },
                  },
                ],
              },
              {
                cells: [
                  {
                    styleId: "coverText",
                    mergeAcross: 3,
                    data: {
                      value:
                        "Data shown lists Olympic medal winners for years 2000-2012",
                      type: "String",
                    },
                  },
                ],
              },
              {
                cells: [
                  {
                    styleId: "coverText",
                    data: {
                      value:
                        "This data includes a row for each participation record - athlete name, country, year, sport, count of gold, silver, bronze medals won during the sports event",
                      type: "String",
                    },
                  },
                ],
              },
            ],
            processHeaderCallback: () => "",
            sheetName: "cover",
          })!,
        );
        //remove filter condition set above so all the grid data can be exported on a separate sheet
        await gridApi.value.setColumnFilterModel("athlete", null);
        gridApi.value!.onFilterChanged();
        spreadsheets.push(gridApi.value!.getSheetDataForExcel()!);
        gridApi.value!.exportMultipleSheetsAsExcel({
          data: spreadsheets,
          fileName: "ag-grid.xlsx",
        });
      };
      performExport();
    }
    const onGridReady = (params: GridReadyEvent) => {
      gridApi.value = params.api;

      const updateData = (data) =>
        (rowData.value = data.filter((rec: any) => rec.country != null));

      fetch("https://www.ag-grid.com/example-assets/small-olympic-winners.json")
        .then((resp) => resp.json())
        .then((data) => updateData(data));
    };

    return {
      gridApi,
      defaultColDef,
      columnDefs,
      excelStyles,
      rowData,
      onGridReady,
      onBtExport,
    };
  },
});

const app = createApp(VueExample);
app.mount("#app");
```

[Live example: Excel Export - Cover Page](https://www.ag-grid.com/examples/excel-export-extra-content/excel-export-cover-page/vue3)

## Adding Header and Footer Content

Extra content can also be added in the form of Headers and Footers of the exported Excel file. Please note that this header and footer content is only visible when printing or exporting from Excel to PDF.

You can set header and footer content via the `headerFooterConfig: ExcelHeaderFooterConfig` object. See it documented further below.

The header and footer object accepts the following placeholders:

- `&[Page]`: Prints the current page number.
- `&[Pages]`: Prints the total number of pages.
- `&[Date]`: Prints the current date.
- `&[Time]`: Prints the current time.
- `&[Tab]`: Prints the current sheet name.
- `&[Path]`: Prints the file path.
- `&[File]`: Prints the file name.
- `&[Picture]`: Adds an image to the Header or Footer, see more [Adding Images to the Header or Footer](#adding-images-to-the-header-or-footer).

#### Excel Export - Custom Header and Footer

```ts
import {
  createApp,
  defineComponent,
  onBeforeMount,
  ref,
  shallowRef,
} from "vue";
import { AgGridVue } from "ag-grid-vue3";
import "./styles.css";
import {
  ClientSideRowModelModule,
  ColDef,
  ColGroupDef,
  ExcelExportParams,
  ExcelHeaderFooterConfig,
  ExcelHeaderFooterContent,
  GridApi,
  GridOptions,
  GridReadyEvent,
  ModuleRegistry,
  NumberFilterModule,
  TextFilterModule,
  enableDevValidations,
} from "ag-grid-community";
import {
  ColumnMenuModule,
  ContextMenuModule,
  ExcelExportModule,
} from "ag-grid-enterprise";
import { IOlympicData } from "./interfaces";
if (process.env.NODE_ENV !== "production") {
  enableDevValidations();
}

ModuleRegistry.registerModules([
  TextFilterModule,
  NumberFilterModule,
  ClientSideRowModelModule,
  ExcelExportModule,
  ColumnMenuModule,
  ContextMenuModule,
]);

const getValues = (type: string) => {
  const value = (
    document.querySelector("#" + type + "Value") as HTMLInputElement
  ).value;
  if (value == null) {
    return;
  }
  const obj: ExcelHeaderFooterContent = {
    value: value,
  };
  obj.position = (
    document.querySelector("#" + type + "Position") as HTMLInputElement
  ).value as "Left" | "Center" | "Right";
  const fontName = (
    document.querySelector("#" + type + "FontName") as HTMLInputElement
  ).value;
  const fontSize = (
    document.querySelector("#" + type + "FontSize") as HTMLInputElement
  ).value;
  const fontWeight = (
    document.querySelector("#" + type + "FontWeight") as HTMLInputElement
  ).value;
  const underline = (
    document.querySelector("#" + type + "Underline") as HTMLInputElement
  ).checked;
  if (
    fontName !== "Calibri" ||
    fontSize != "11" ||
    fontWeight !== "Regular" ||
    underline
  ) {
    obj.font = {};
    if (fontName !== "Calibri") {
      obj.font.fontName = fontName;
    }
    if (fontSize != "11") {
      obj.font.size = Number.parseInt(fontSize);
    }
    if (fontWeight !== "Regular") {
      if (fontWeight.indexOf("Bold") !== -1) {
        obj.font.bold = true;
      }
      if (fontWeight.indexOf("Italic") !== -1) {
        obj.font.italic = true;
      }
    }
    if (underline) {
      obj.font.underline = "Single";
    }
  }
  return obj;
};

const getParams: () => ExcelExportParams | undefined = () => {
  const header = getValues("header");
  const footer = getValues("footer");
  if (!header && !footer) {
    return undefined;
  }
  const obj: ExcelExportParams = {
    headerFooterConfig: {
      all: {},
    },
  };
  if (header) {
    obj.headerFooterConfig!.all!.header = [header];
  }
  if (footer) {
    obj.headerFooterConfig!.all!.footer = [footer];
  }
  return obj;
};

const VueExample = defineComponent({
  template: `
        <div style="height: 100%">
                <div class="container">
      <div class="columns">
        <fieldset class="column">
          <legend>Header</legend>
          <div class="row">
            Position
            <select id="headerPosition">
              <option>Left</option>
              <option>Center</option>
              <option>Right</option>
            </select>
          </div>
          <div class="row">
            Font
            <select id="headerFontName">
              <option>Calibri</option>
              <option>Arial</option>
            </select>
            <select id="headerFontSize">
              <option>11</option>
              <option>12</option>
              <option>13</option>
              <option>14</option>
              <option>16</option>
              <option>20</option>
            </select>
            <select id="headerFontWeight">
              <option>Regular</option>
              <option>Bold</option>
              <option>Italic</option>
              <option>Bold Italic</option>
            </select>
            <label class="option underline" for="headerUnderline">
              <input type="checkbox" id="headerUnderline"><u>U</u>
            </label>
          </div>
          <div class="row option">
            Value
            <input id="headerValue">
            </div>
          </fieldset>
          <fieldset class="column">
            <legend>Footer</legend>
            <div class="row">
              Position
              <select id="footerPosition">
                <option>Left</option>
                <option>Center</option>
                <option>Right</option>
              </select>
            </div>
            <div class="row">
              Font
              <select id="footerFontName">
                <option>Calibri</option>
                <option>Arial</option>
              </select>
              <select id="footerFontSize">
                <option>11</option>
                <option>12</option>
                <option>13</option>
                <option>14</option>
                <option>16</option>
                <option>20</option>
              </select>
              <select id="footerFontWeight">
                <option>Regular</option>
                <option>Bold</option>
                <option>Italic</option>
                <option>Bold Italic</option>
              </select>
              <label class="option underline" for="footerUnderline">
                <input type="checkbox" id="footerUnderline"><u>U</u>
              </label>
            </div>
            <div class="row">
              Value
              <input id="footerValue">
              </div>
            </fieldset>
          </div>
          <div>
            <button v-on:click="onBtExport()" style="margin: 5px 0px; font-weight: bold">Export to Excel</button>
          </div>
          <div class="grid-wrapper">
            <ag-grid-vue
              style="width: 100%; height: 100%;"
              @grid-ready="onGridReady"
              :columnDefs="columnDefs"
              :defaultColDef="defaultColDef"
              :popupParent="popupParent"
              :rowData="rowData"></ag-grid-vue>
            </div>
          </div>
        </div>
    `,
  components: {
    "ag-grid-vue": AgGridVue,
  },
  setup(props) {
    const gridApi = shallowRef<GridApi<IOlympicData> | null>(null);
    const columnDefs = ref<ColDef[]>([
      { field: "athlete", minWidth: 200 },
      { field: "country", minWidth: 200 },
      { field: "sport", minWidth: 150 },
      { field: "gold" },
      { field: "silver" },
      { field: "bronze" },
      { field: "total" },
    ]);
    const defaultColDef = ref<ColDef>({
      filter: true,
      minWidth: 100,
      flex: 1,
    });
    const popupParent = ref<HTMLElement | null>(document.body);
    const rowData = ref<IOlympicData[]>(null);

    function onBtExport() {
      gridApi.value!.exportDataAsExcel(getParams());
    }
    const onGridReady = (params: GridReadyEvent) => {
      gridApi.value = params.api;

      const updateData = (data) =>
        (rowData.value = data.filter((rec: any) => rec.country != null));

      fetch("https://www.ag-grid.com/example-assets/small-olympic-winners.json")
        .then((resp) => resp.json())
        .then((data) => updateData(data));
    };

    return {
      gridApi,
      columnDefs,
      defaultColDef,
      popupParent,
      rowData,
      onGridReady,
      onBtExport,
    };
  },
});

const app = createApp(VueExample);
app.mount("#app");
```

[Live example: Excel Export - Custom Header and Footer](https://www.ag-grid.com/examples/excel-export-extra-content/excel-export-header-footer/vue3)

## Adding Images to the Header or Footer

In addition to exporting the Grid as an Excel file, you can also provide pictures on the Header or Footer of the Worksheet. This can be useful when you want to use images as watermark for example. Please note that the watermark image will only be visible in the header & footer view or when printing in Excel.

#### Excel Export - Header Image

```ts
import {
  createApp,
  defineComponent,
  onBeforeMount,
  ref,
  shallowRef,
} from "vue";
import { AgGridVue } from "ag-grid-vue3";
import "./styles.css";
import {
  ClientSideRowModelModule,
  ColDef,
  ColGroupDef,
  ExcelExportParams,
  GridApi,
  GridOptions,
  GridReadyEvent,
  ModuleRegistry,
  NumberFilterModule,
  TextFilterModule,
  enableDevValidations,
} from "ag-grid-community";
import {
  ColumnMenuModule,
  ContextMenuModule,
  ExcelExportModule,
} from "ag-grid-enterprise";
import { agGridLogo } from "./logo";
import { IOlympicData } from "./interfaces";
if (process.env.NODE_ENV !== "production") {
  enableDevValidations();
}

ModuleRegistry.registerModules([
  TextFilterModule,
  NumberFilterModule,
  ClientSideRowModelModule,
  ExcelExportModule,
  ColumnMenuModule,
  ContextMenuModule,
]);

const VueExample = defineComponent({
  template: `
        <div style="height: 100%">
                <div class="container">
      <div>
        <button v-on:click="onBtExport()" style="margin: 5px 0px; font-weight: bold">Export to Excel</button>
      </div>
      <div class="grid-wrapper">
        <ag-grid-vue
          style="width: 100%; height: 100%;"
          @grid-ready="onGridReady"
          :columnDefs="columnDefs"
          :defaultColDef="defaultColDef"
          :popupParent="popupParent"
          :defaultExcelExportParams="defaultExcelExportParams"
          :rowData="rowData"></ag-grid-vue>
        </div>
      </div>
        </div>
    `,
  components: {
    "ag-grid-vue": AgGridVue,
  },
  setup(props) {
    const gridApi = shallowRef<GridApi<IOlympicData> | null>(null);
    const columnDefs = ref<ColDef[]>([
      { field: "athlete", minWidth: 200 },
      { field: "country", minWidth: 200 },
      { field: "sport", minWidth: 150 },
      { field: "gold" },
      { field: "silver" },
      { field: "bronze" },
      { field: "total" },
    ]);
    const defaultColDef = ref<ColDef>({
      filter: true,
      minWidth: 100,
      flex: 1,
    });
    const popupParent = ref<HTMLElement | null>(document.body);
    const defaultExcelExportParams = ref<ExcelExportParams>({
      headerFooterConfig: {
        all: {
          header: [
            {
              value: "&[Picture]",
              image: {
                id: "logo",
                base64: agGridLogo,
                width: 720,
                height: 250,
                imageType: "png",
                recolor: "Grayscale",
              },
              position: "Center",
            },
          ],
        },
      },
    });
    const rowData = ref<IOlympicData[]>(null);

    function onBtExport() {
      gridApi.value!.exportDataAsExcel();
    }
    const onGridReady = (params: GridReadyEvent) => {
      gridApi.value = params.api;

      const updateData = (data) =>
        (rowData.value = data.filter((rec: any) => rec.country != null));

      fetch("https://www.ag-grid.com/example-assets/small-olympic-winners.json")
        .then((resp) => resp.json())
        .then((data) => updateData(data));
    };

    return {
      gridApi,
      columnDefs,
      defaultColDef,
      popupParent,
      defaultExcelExportParams,
      rowData,
      onGridReady,
      onBtExport,
    };
  },
});

const app = createApp(VueExample);
app.mount("#app");
```

[Live example: Excel Export - Header Image](https://www.ag-grid.com/examples/excel-export-extra-content/excel-export-header-image/vue3)

### ExcelHeaderFooterConfig

Properties available on the `ExcelHeaderFooterConfig` interface.

| Property | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `all` | [`ExcelHeaderFooter`](https://www.ag-grid.com/vue-data-grid/excel-export-api/#excelheaderfooter) |  |  | The configuration for header and footer on every page. |
| `first` | [`ExcelHeaderFooter`](https://www.ag-grid.com/vue-data-grid/excel-export-api/#excelheaderfooter) |  |  | The configuration for header and footer on the first page only. |
| `even` | [`ExcelHeaderFooter`](https://www.ag-grid.com/vue-data-grid/excel-export-api/#excelheaderfooter) |  |  | The configuration for header and footer on even numbered pages only. |

### ExcelHeaderFooter

Properties available on the `ExcelHeaderFooter` interface. At least one of header or footer is required or both.

| Property | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `header` | [`ExcelHeaderFooterContent[]`](https://www.ag-grid.com/vue-data-grid/excel-export-api/#excelheaderfootercontent) |  |  | An array of maximum 3 items (`Left`, `Center`, `Right`), containing header configurations. |
| `footer` | [`ExcelHeaderFooterContent[]`](https://www.ag-grid.com/vue-data-grid/excel-export-api/#excelheaderfootercontent) |  |  | An array of maximum 3 items (`Left`, `Center`, `Right`), containing footer configurations. |

### ExcelHeaderFooterContent

Properties available on the `ExcelHeaderFooterContent` interface.

| Property | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `value` | `string` | Yes |  | The value of the text to be included in the header. |
| `image` | [`ExcelHeaderFooterImage`](https://www.ag-grid.com/vue-data-grid/excel-export-api/#excelheaderfooterimage) |  |  | When value is `&[Picture]`, this should be used as the referenced image. |
| `position` | `'Left' \| 'Center' \| 'Right'` |  | `'Left'` | Configures where the text should be added: `Left`, `Center` or `Right`. |
| `font` | [`ExcelFont`](https://www.ag-grid.com/vue-data-grid/excel-export-api/#excelfont) |  |  | The font style of the header/footer value. |

### ExcelHeaderFooterImage

Properties available on the `ExcelHeaderFooterImage` interface.

| Property | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `width` | `number` | Yes |  | The width of the image in pixels. |
| `height` | `number` | Yes |  | The height of the image in pixels. |
| `id` | `string` | Yes |  | The image `id`. This field is required so the same image doesn't get imported multiple times. |
| `base64` | `string` | Yes |  | A base64 string that represents the image being imported. See [Base64](https://en.wikipedia.org/wiki/Base64) for more information. |
| `imageType` | `'jpg' \| 'png' \| 'gif'` | Yes |  | The type of image being exported. |
| `recolor` | `'Grayscale' \| 'Black & White' \| 'Washout'` |  |  | Set this property to select a preset that changes the appearance of the image. |
| `brightness` | `number` |  |  | The brightness of the image between 0 and 100 (if `recolor` is used, this value will only be applied for `Grayscale`). Default 50 |
| `contrast` | `number` |  |  | The contrast of the image between 0 and 100. (If `recolor` is used, this value will only be applied for `Grayscale`.). Default 50 |
| `altText` | `string` |  |  | Alt Text for the image. |
