> ## Documentation Index
> Fetch the complete documentation index at: https://developers.gonitro.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Actions

> Every action in the Nitro PDF Services connector for Power Automate, grouped by conversions, transformations, extractions, and forms.

The connector exposes 33 actions. Every action takes a file input labelled by type — **PDF File**,
**Word File**, **Image File**, and so on — plus, for some actions, a dropdown or a JSON options
field. Actions return either a file or a JSON result.

<Note>
  Where an input below shows a JSON snippet, that JSON is typed into a single text field in the
  designer. The full shape of every JSON input, and how to use the JSON outputs, is on
  [Working with files](/docs/integrations/power-automate/working-with-files#json-inputs-by-action).
</Note>

## File outputs

Actions that return a file expose the same three tokens in the dynamic content picker:

| Token | Holds |
| - | - |
| **File Name** | `result.pdf`, `result.docx`, `result.zip`, … |
| **File Content Type** | The MIME type of the result |
| **File Content** | The file's bytes |

Drop **File Content** into the next step — another Nitro action, **Create file**, or an email
attachment. The **Accept (Output format)** input under **Advanced parameters** switches an action
from returning the file (`application/octet-stream`, the default) to returning a short-lived
download URL (`application/json`). See
[Output modes](/docs/integrations/power-automate/working-with-files#output-modes).

## Conversions

Convert between PDF and other document formats. All return a file.

| Action | Inputs | Output |
| - | - | - |
| **Word to PDF** | Word File (`.doc`, `.docx`, `.docm`, `.dotx`, `.dotm`) | PDF |
| **Excel to PDF** | Excel File (`.xls`, `.xlsx`, `.xlsm`, `.xltx`, `.xltm`) | PDF |
| **PowerPoint to PDF** | PowerPoint File (`.ppt`, `.pptx`) | PDF |
| **Image to PDF** | Image File (JPEG, PNG, GIF, TIFF, SVG) | PDF |
| **HTML to PDF** | HTML File (also XML, CSV, EPS, RTF) | PDF |
| **PDF to Word** | PDF File | DOCX |
| **PDF to Excel** | PDF File | XLSX |
| **PDF to PowerPoint** | PDF File | PPTX |
| **PDF to Image** | PDF File, *Output Image Format*: `png` or `jpeg` | ZIP of one image per page |
| **PDF to PDFA** | PDF File, *PDF/A Parameters*: `{"conformance":"2b"}` | PDF/A |

Notes:

* **PDF to Image** is a multi-file output. In the default mode the result is a ZIP archive; in
  `application/json` mode it is a `result.files` array. See
  [Multi-file outputs](/docs/integrations/power-automate/working-with-files#multi-file-outputs).
* **PDF to PDFA** conformance levels are `1b`, `1a`, `2b`, `2u`, `2a`, `3b`, `3u`, `3a`. The `a`
  levels require a tagged source PDF; use `b` or `u` for general archiving.

## Transformations

Modify or restructure a PDF. All return a file.

| Action | Inputs |
| - | - |
| **Compress PDF Document** | PDF File |
| **Optimize PDF Document** | PDF File, *Optimization Profile*: `web`, `print`, `archive`, `minimal-file-size`, `mixed-raster-content` |
| **Flatten PDF Document** | PDF File |
| **Rotate PDF Document** | PDF File, *Rotate pages (clockwise degrees)*: `{"rotations":[{"page_index":0,"amount":90}]}` |
| **Delete PDF Pages** | PDF File, *Delete Pages*: `{"pageIndices":[0,2]}` |
| **Split PDF Document** | PDF File, *Pages*: `{"pageIndices":[[0,2],[1,3,4]]}` |
| **Merge PDF Documents** | File 1 … File 8 (first two required), *Options (JSON)*: `{"tableOfContents":{"enabled":false}}` |
| **Watermark PDF Document** | PDF File, Watermark Image, *Watermark Parameters*: `{"boundingBox":[210,10,290,60],"opacity":0.5}` |
| **Redact PDF Pages** | PDF File, *Properties*: `{"redactions":[{"pageIndex":0,"boundingBox":[100,100,200,120]}]}` |
| **Set PDF Properties** | PDF File, *Properties*: `{"title":"…","author":"…","subject":"…","keywords":"…"}` |
| **Password Protect PDF Document** | PDF File, *Protection Parameters*: `{"ownerPassword":"…","userPassword":"…","permissions":["print","copy"]}` |
| **Unprotect PDF Document** | PDF File, *Unprotection parameters*: `{"ownerPassword":"…","userPassword":"…"}` |
| **OCR PDF Document** | PDF File, *OCR Parameters* (optional): `{"language":"english","quality":"high"}` |

Notes:

* **Compress** has no options and always targets the smallest file. Use **Optimize** when you want
  to choose the size/quality trade-off.
* **Flatten** is irreversible — form fields, annotations, signatures, layers and transparencies
  become static page content.
* **Rotate** takes `page_index` (with an underscore), unlike every other action, which uses
  `pageIndices`. Valid `amount` values are `90`, `180` and `270`.
* **Split** takes an array of arrays: each inner array is the set of pages that becomes one output
  file. It is a multi-file output like **PDF to Image**.
* **Merge** adds a bookmark for each source document (*Document 1*, *Document 2*, …) by
  default, so readers can jump between them; no page is inserted. Pass
  `{"tableOfContents":{"enabled":false}}` to merge without bookmarks. To merge a variable number of files, see
  [Working with files](/docs/integrations/power-automate/working-with-files#merging-a-variable-number-of-files).
* **Watermark** boxes are `[x0, y0, x1, y1]` corner coordinates; **Redact** boxes are
  `[x, y, width, height]`. Both are in points from the top-left — see the
  [Bounding Box Guide](/docs/build-nitro/bounding-box).
* **Password Protect** needs at least one of `ownerPassword` or `userPassword`. Permissions are
  `print`, `modify`, `copy`, `annotate`, `form`, `assemble`, `print-hq`.
* **OCR** processes one language per request: `english`, `german`, `french`, `spanish`, `italian`,
  `finnish`, `swedish`, `danish`, `norwegian`, `dutch`, `portuguese`, `brazilian`.

## Extractions

Pull data out of a PDF. All of these return JSON under a `result` property, and none has an
**Accept** input.

| Action | Inputs | Returns |
| - | - | - |
| **Extract all Text from PDF** | PDF File, *Extraction Parameters* (optional): `{"pageIndices":[0,2],"readingOrder":true}` | `result` — the text as one string |
| **Extract PDF Form Data** | PDF File | `result.fields[]` — name, value and confidence per field |
| **Extract PDF Table Data** | PDF File | `result.tables[]` — cells, headers, footers and confidences |
| **Extract Properties from PDF** | PDF File | `result.title`, `author`, `subject`, `keywords`, `creator`, `producer`, dates, `trapped` |
| **Extract searched Text from PDF** | PDF File, *Queries to Search*: `{"queries":[{"text":"Name"}]}` | `result.textBoxes[]` — matches and bounding boxes per query |
| **Extract PII from PDF** | PDF File, *Document Language*: `en` or `es` | `result.PIIBoxes[]` — value, type, confidence and bounding box |
| **Extract Invoice Data from PDF** | PDF File | `result.expenseDocuments[]` — vendor, dates, totals, line items |
| **Smart Detect Form Fields** | PDF File | `result.formFields[]` — where fillable fields should go |

Notes:

* **Extract all Text** with `readingOrder: true` reorders text to follow the visual reading flow.
  It helps on multi-column layouts but can interleave adjacent columns on dense designs.
* **Extract searched Text** matches literally and case-sensitively unless `isRegex` is `true`;
  regex queries accept `regexFlags` of `ignore-case`, `multiline` and `dot-all`.
* **Extract PII** and **Extract searched Text** return bounding boxes in the shape **Redact PDF
  Pages** accepts, so they chain into a detect-then-redact flow — see
  [Feeding one action's JSON into another](/docs/integrations/power-automate/working-with-files#feeding-one-actions-json-into-another).
* **Extract Invoice Data** handles scanned invoices with built-in OCR.
* **Extract PDF Table Data** and **Smart Detect Form Fields** have out-of-date token lists in the
  picker; read their results with an expression as described on
  [Working with files](/docs/integrations/power-automate/working-with-files#using-json-outputs).

## Forms

| Action | Inputs | Returns |
| - | - | - |
| **Fill PDF Form** | PDF Form Template, Form Data File (CSV, JSON, XFDF or FDF) *or* *Options (JSON)*: `{"fields":[{"field":"name","value":"x"}]}` | The filled PDF |
| **Create Fillable Forms** | PDF File, *Form Fields (JSON)*: `{"formFields":[…]}` | The PDF with a real AcroForm |

Notes:

* **Fill PDF Form** accepts the values either as a file or inline in **Options (JSON)**; provide
  one or the other. `strict: true` fails the request on unknown field names. Leave **Accept** at its
  default for this action — see
  [Output modes](/docs/integrations/power-automate/working-with-files#output-modes).
* **Create Fillable Forms** takes exactly what **Smart Detect Form Fields** returns, so the two
  chain with a single expression.

## Worked examples

These three pages document one action each in full — inputs, outputs, and a complete flow.

<Columns cols={3}>
  <Card title="Compress PDF" icon="file-zipper" href="/docs/integrations/power-automate/actions/compress-pdf">
    A single-input transformation.
  </Card>

  <Card title="Merge PDFs" icon="layer-group" href="/docs/integrations/power-automate/actions/merge-pdfs">
    A multi-file transformation.
  </Card>

  <Card title="Extract text" icon="align-left" href="/docs/integrations/power-automate/actions/extract-text">
    A JSON-returning extraction.
  </Card>
</Columns>
