Skip to main content
The PDF Tools connector creates PDFs from structured content and works with existing ones: extracting text, merging, splitting, and manipulating pages.
No connection required; this utility connector works out of the box.
All PDF inputs and outputs are base64-encoded strings.

Tools

Builds a PDF from text you write in simple Markdown, rows from an earlier step, or both, laid out top to bottom. The content comes first, then the rows as a table, then any blocks. Text wraps, tables continue onto new pages with their header repeated, and every page can carry a footer and a page number. Text uses Noto Sans, which covers Latin, Greek, Cyrillic and Vietnamese; Chinese, Japanese and Korean characters are not supported yet and print as ? (they are listed in unsupportedCharacters).
string
The document text in simple Markdown. Insert {{ variables }} from earlier steps anywhere in it.
  • # Heading, ## Heading, ### Heading (deeper levels print as ###)
  • Plain lines become paragraphs; a blank line starts a new one
  • **Label:** value lines become a label and value list, for invoice or order headers
  • - item lines become a bulleted list, and 1. item lines a numbered one
  • A | a | b | table with a |---|---| line under the header; ---: right-aligns a column
Bold, italic and code markers are removed (the PDF uses one text style), links print as “text (url)”, and images in Markdown are not loaded.
object[] | array[]
Rows from an earlier step, such as {{ my_query.rows }} or {{ csv_tools_1.items }}, drawn as a table after the content. For a list of objects, the keys become the column headers (on_hand prints as “On hand”); number columns are right-aligned. A list of lists, a JSON string of rows, or an output that wraps its rows in rows, data, items, results or records also works.
string[]
Which fields of rows to show, in order (default: every field). For a list of lists, the column headers.
object[]
Advanced: exact layout blocks, added after the content and rows. Use these for images or page breaks. Each block has a type:
  • heading: text, optional level 1 to 3
  • paragraph: text (blank lines start new paragraphs)
  • keyValue: items, a list of { "label", "value" }, for invoice or order headers
  • list: items, a list of strings shown as bullet points, or numbered with "ordered": true
  • table: columns (each { "header", "width"?, "align"? }, width is a relative weight, align is left or right) and rows (one array of cells per row)
  • image: data (base64 PNG or JPEG), optional width in points and align
  • spacer: optional height in points
  • pageBreak
string
Title printed at the top and set as the PDF title.
string
A4 (default) or Letter.
string
portrait (default) or landscape.
number
Page margin in points, 18 to 144 (default 48).
Text printed at the bottom of every page.
boolean
Print “Page N of M” on every page (default true).
string
PDF author metadata.
At least one of content, rows or blocks is required. Images must be passed as base64 data; the tool never fetches anything from a URL. A document is limited to 500 pages, 20,000 rows and 20 columns per table, 5 MB per image and 20 MB of input. Fonts are embedded in full, so a PDF is around 500 KB at minimum.Example content (Markdown): an order confirmation typed into the Content box, using values from an earlier shopify_1 step.
This prints a heading, a label and value list for the order details, a paragraph, a table with the quantity and price columns right-aligned, a numbered list and a bulleted list. To print the line items from a step instead of typing the table, leave the table out and set rows to {{ shopify_1.order.line_items }}, with columns listing the fields to show. A rows table always prints after all of the content, so put anything that would follow it, such as the total, in the content above it instead.Example request (content and rows together):
Example response:
string
required
Base64-encoded PDF.
number
Maximum number of pages to extract.
Example request:
Example response:
Returns page count, title, author, and other metadata.
string
required
Base64-encoded PDF.
Example request:
Example response:
Combine multiple PDFs into a single document.
string[]
required
Array of base64-encoded PDFs.
Example request:
Example response:
Create a new PDF with only the specified pages.
string
required
Base64-encoded PDF.
number[]
required
Page numbers to extract (1-indexed).
Example request:
Example response:
Split a PDF into individual single-page PDFs.
string
required
Base64-encoded PDF.
Example request:
Example response:
string
required
Base64-encoded PDF.
string
required
Rotation angle (clockwise): "90", "180", or "270".
number[]
Pages to rotate (all pages if omitted).
Example request:
Example response:
Create a new PDF with the specified pages removed.
string
required
Base64-encoded PDF.
number[]
required
Page numbers to remove (1-indexed).
Example request:
Example response: