Link Search Menu Expand Document

Macros for text, built-in macros and using custom data for custom macros for auto text replacement

You can use built-in and custom macros inside text when using pdf/edit/add endpoint or Fill PDF or Add Text and Images to PDF modules in Zapier, Integromat/Make and others.

Macros may look like this: {{$$newLine}}, [[$$newLine]] or {{object.property}} (when referencing a custom data from JSON).

Built-in macros

Built-in macros always use $$ prefix.

Available built-in macros

  • {{$$PageNumber}} outputs current page number (starts with 1)
  • {{$$PageCount}} will be outputing page count as txt
  • {{$$newLine}} will be replaced with a new line

Special macros style switch from curly brackets to square brackets (for use in Zapier, Integromat/Make and others)

Some popular automation platform use {{ .. }} style macros for their internal purpose. To fix this you can use [[ ..]] square brackets instead. Just add the command ##replaceSquareBracketsToCurlyBrackets## at the beginnig of the text (just once!).

For example, use this:

##replaceSquareBracketsToCurlyBrackets##[[macro1]]

instead of

{{macro1}}

Custom macros

You can also put JSON with custom data into templateData property. Then you can use data from this JSON as {{name}} or {{object.property}} macros (or as [[name]] or [[object.property]] if you enabled sqyare brackets to curly conversion too)

Example:

POST /pdf/edit/add
{
    "url": "https://bytescout-com.s3-us-west-2.amazonaws.com/files/demo-files/cloud-api/pdf-edit/sample.pdf",
    "templateData": "{ \"firstName\": \"John\",  \"lastName\": \"Doe\",  \"age\": 26,   \"address\": {        \"streetAddress\": \"Market Street\",  \"city\": \"San-Francisco\",        \"postalCode\": \"94100\"    },    \"phoneNumbers\": [        {            \"type\": \"iPhone\",            \"number\": \"0123-4567-8888\"        },        {            \"type\": \"home\",            \"number\": \"0123-4567-8910\"        }    ]}",

    "annotations": [
        {
            "text": "{{firstName}} {{lastName}}\n{{address.streetAddress}}{{$$newLine}}{{phoneNumbers[0].number}}",
            "x": 250,
            "y": 100,
            "width": 150,
            "height": 100,
            "size": 12,
            "pages": "0-",
            "type": "TextFieldMultiline",
            "id": "multiline1"
        },
        {
            "text": "##replaceSquareBracketsToCurlyBrackets##Company: [[firstName]][[$$NewLine]][[lastName]]",
            "x": 50,
            "y": 50,
            "size": 12,
            "pages": "0-"
        }        
    ]
}

NOTE: JSON loaded into .templateData should be escaped (with JSON.stringify(dataObject) in JS). Escaping is when every " is replaced with \" (most programming languages are doing it automatically though.

Non-escaped JSON:

"templateData": "{ 'paid': true, 'invoice_id': '0002', 'total': '$999.99' }"

Escaped JSON (with " be escaped as \"):

"templateData": "{ \"paid\": true, \"invoice_id\": \"0002\", \"total\": \"$999.99\" }"

Custom Pragma

you can disable HTML rendering support using pragma at the begining of text.

Example:

POST /pdf/edit/add
{
    "url": "https://bytescout-com.s3-us-west-2.amazonaws.com/files/demo-files/cloud-api/pdf-edit/sample.pdf",

    "annotations":[
        {
            "text":"##disableHtmlFormatting##html formatting disabled: <b>bold</b>, <u>underline</u> and <i>italic</i> styles.",
            "x": 10,
            "y": 10,
            "size": 12,
            "pages": "0-"
        },
        {
            "text":"html formatting auto enabled: <b>bold</b>, <u>underline</u> and <i>italic</i> styles.",
            "x": 10,
            "y": 25,
            "size": 12,
            "pages": "0-"
        }        
    ]
}