> ## 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 Zapier app, grouped by conversions, extractions, transformations, and forms.

The app provides 29 actions and no triggers, so Nitro is always a step inside a Zap rather than
its starting point. Every action takes a **file** input; Zapier supplies either the file itself or
a URL to it, and the app handles both.

Action names below are the labels you see in the Zap editor's action picker.

## Output Type

Actions that return a file have an **Output Type** field:

| Choice | Output fields |
| - | - |
| **Download file** *(default for most)* | A file object under a labelled field such as **Compressed PDF File**, ready for any file-accepting field in a later step |
| **Download URL** | `file_url`, `content_type`, `file_size_bytes`, `page_count` |

Extractions have no **Output Type** — they always return structured fields. See
[Working with files](/docs/integrations/zapier/working-with-files) for how to use each.

## Conversions

| Action | Inputs | Output |
| - | - | - |
| **Microsoft Office to PDF** | MS Office File; Input Format (`.doc`, `.docx`, `.xls`, `.xlsx`, `.ppt`, `.pptx`); Output Type | PDF |
| **PDF to Microsoft Office** | PDF File; Output Format (Word DOCX, Excel XLSX, PowerPoint PPTX); Output Type | Office file |
| **Image to PDF** | Image File; Input Format (GIF, JPEG, PNG, SVG, TIFF); Output Type | PDF |
| **PDF to Image** | PDF File; Output Format (PNG, JPEG); Output Type *(defaults to Download URLs)* | One image per page |
| **CSV, XML, HTML to PDF** | Input File; Input Format (CSV, XML, HTML); Output Type | PDF |
| **PDF to PDF/A** | PDF File; PDF/A Conformance Level (default 2b); Image Quality (0.0–1.0); Copy Metadata; Output Type | PDF/A |

Notes:

* **Input Format** on the *to PDF* conversions is not detected from the uploaded file — pick the
  format that matches your file or the conversion fails.
* **PDF to Image** is a multi-file output. See
  [Multi-file outputs](/docs/integrations/zapier/working-with-files#multi-file-outputs).
* **PDF to PDF/A** conformance levels ending in `a` (1a, 2a, 3a) require a tagged source PDF; use
  `2b` (the default) or a `u` level for general archiving.

## Extractions

All of these return structured fields and have no **Output Type**.

| Action | Inputs | Returns |
| - | - | - |
| **Text Extract** | PDF File; Page Indices (comma-separated, e.g. `0,2`); Reading Order | `text`, plus `pages_text[]` split on blank lines |
| **Form Extract** | PDF File | `fields[]` with name, value and confidence; `average_confidence` |
| **Table Extract** | PDF File | `tables_count`, `tables[]` with page indices, title and confidence; `first_table` |
| **Get PDF Properties** | PDF File | Title, author, subject, keywords, creator, producer, dates, trapped, page count |
| **Text Bounding Box Extract From PDF** | PDF File; Texts to Search (comma-separated); Treat as Regular Expressions; Regex Flags | `matches_count`, `text_boxes[]`, `redactions[]`, `redactions_json` |
| **Smart PII Detection** | PDF File; Language (English or Spanish) | `pii_count`, `pii_types[]`, `pii_boxes[]`, `redactions[]`, `redactions_json` |
| **Parse Invoice** | Invoice or Receipt PDF | Vendor, dates, invoice number, currency, subtotal, tax and total (each with a confidence), `line_items[]`, `summary_fields[]` |
| **Smart Detect Form Fields** | PDF File | `formFields[]` with page index, field type, name, bounding box and value |

Notes:

* **Text Extract** with **Reading Order** on reorders text to follow the visual reading flow. It
  helps on multi-column layouts but can interleave adjacent columns on dense designs. `pages_text`
  is derived by splitting the text on blank lines, so it approximates page boundaries rather than
  guaranteeing them.
* **Text Bounding Box Extract** matches literally and case-sensitively unless **Treat as Regular
  Expressions** is on. **Regex Flags** accepts `ignore-case`, `multiline` and `dot-all`.
* **Text Bounding Box Extract** and **Smart PII Detection** both emit **Redactions JSON**, shaped
  exactly like **Redact PDF**'s input, so the two chain directly into a detect-then-redact Zap.
* **Smart Detect Form Fields** outputs map straight into **Add Fillable Form Fields** — see
  [Chaining actions](/docs/integrations/zapier/working-with-files#chaining-actions).
* **Parse Invoice** handles scanned invoices with built-in OCR.

## Transformations

All return a file.

| Action | Inputs |
| - | - |
| **Compress PDF** | PDF File; Output Type |
| **Optimize PDF** | PDF File; Optimization Profile (Web, Print, Archive, Minimal Size, Scanned Documents); Output Type |
| **Flatten PDF** | PDF File; Output Type |
| **Rotate PDF** | PDF File; Page Indices (list); Rotation Amounts (90, 180, 270, -90); Output Type |
| **Delete PDF Pages** | PDF File; Page Indices (comma-separated, e.g. `0,1,2,5`); Output Type |
| **Split PDF** | PDF File; Page Indices (JSON), e.g. `[[0,2],[1,3,4]]`; Output Type *(defaults to Download URLs)* |
| **Merge PDFs** | PDF Files (a list — order matters, up to 25); Output Type |
| **Watermark PDF** | PDF File; Watermark Image; Bounding Box (`x0,y0,x1,y1`); Opacity; Rotation; Page Indices; Flip; Rotate With Page; Center On Page; Content Depth; Fit To Page Width/Height; Output Type |
| **Redact PDF** | PDF File; Redactions JSON; Output Type |
| **Set Properties** | PDF File; Title; Author; Subject; Keywords; Creator; Producer; Output Type |
| **Password Protect PDF** | PDF File; Owner Document Key; User Document Key; Allowed Permissions; Output Type |
| **Unprotect PDF** | Protected PDF File; Owner Unlock Key; User Unlock Key; Output Type |
| **Ocr PDF** | PDF File; Language; Quality; Output Editable PDF; Compression Level; PDF Version; Page Indices; Output Type |

Notes:

* **Compress** has no options and always targets the smallest file. Use **Optimize** to choose the
  size/quality trade-off.
* **Flatten** is irreversible — form fields, annotations and layers become static page content.
* **Rotate** takes two parallel lists. Supply one rotation amount to apply it to every listed
  page, or as many amounts as page indices to rotate each page differently.
* **Split** requires a JSON array of arrays: each inner array is the set of pages that becomes one
  output file. A malformed value fails the step with an `InvalidInput` error before any request
  reaches Nitro.
* **Merge** takes a genuine list, so a Zap can merge up to 25 files in one step — unlike the
  Power Automate connector, which has eight fixed slots. The merged PDF gets a bookmark per source
  document (*Document 1*, *Document 2*, …); there is no option to turn that off in Zapier.
* **Watermark**'s **Bounding Box** is `x0,y0,x1,y1` corner coordinates; **Redact** boxes are
  `[x, y, width, height]`. Both are in points from the top-left of the page — see the
  [Bounding Box Guide](/docs/build-nitro/bounding-box).
* **Password Protect** needs at least one of Owner Document Key or User Document Key. Leaving
  **Allowed Permissions** empty keeps the document read-only.
* **Unprotect** requires at least one unlock key and fails with `InvalidInput` if both are empty.
* **Ocr PDF** processes one language per request.

## Forms

| Action | Inputs | Output |
| - | - | - |
| **Fill PDF Form** | PDF Form Template; Form Data File (CSV, JSON, XFDF or FDF) *or* Field Mappings (inline name → value rows); Strict Mode; Output Type | The filled PDF |
| **Add Fillable Form Fields** | PDF File; Page Indices, Field Types, Field Names, Bounding Boxes and Field Values (parallel lists); Output Type | The PDF with a real AcroForm |

Notes:

* **Fill PDF Form** takes the values either as a file or as inline **Field Mappings** — one or the
  other. Checkbox fields accept `true`, `yes`, `1` or `x`. **Strict Mode** fails the step on unknown
  field names.
* **Add Fillable Form Fields** takes one entry per field in each list; map the matching **Smart
  Detect Form Fields** outputs into them and the counts line up automatically. The older
  **Form Fields to Create** input is legacy and ignored.

## Worked examples

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

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

  <Card title="Merge PDFs" icon="layer-group" href="/docs/integrations/zapier/actions/merge-pdfs">
    A list-input transformation.
  </Card>

  <Card title="Text Extract" icon="align-left" href="/docs/integrations/zapier/actions/extract-text">
    A structured-output extraction.
  </Card>
</Columns>
