Macros for text, built-in macros and using custom data for custom macros for auto text replacement
{% raw %}
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 with1
){{$$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-"
}
]
}
{% endraw %}