Docupilot
Ask or search…
K
Links

Document Builder

Getting Started

The Document builder gives you all the necessary tools to help you build your document in a PDF format. You can include Document Headers, Text, Images, Tables, Page Breaks, etc.
Overview of Document Builder

Types of Merge Fields

Docupilot supports a variety of merge fields for you to use in your document builder.
  • Tokens (Merge Field)
  • Condition (if-else & unless-else)
  • Loops
  • Tables
Docupilot supports easy ways to insert Merge fields into your document template. {{ }} button on the toolbar helps you insert the merge fields.

Tokens (Merge Field)

These are simple words embraced in {{}}. When you provide your custom data, Docupilot will replace these fields with the data. For example {{email}}, {{client_name}}, {{company_name}}.
If you want to group your fields you can use dot(.) while defining the tokens. For example if you want to capture your client's first name & last name, you can write the tokens as {{client.first_name}} and {{client.last_name}}

Condition (if-else & unless-else)

You can use conditional statements to show or hide contents based on your data. For example, if you are creating an invoice you want to display PAID if the payment status field is paid, else you want to show UNPAID.
{{#if payment_status "==" "paid"}}
PAID
{{else if payment_status "==" "partial"}}
PARTIAL PAID
{{else}}
UNPAID, Insert Payment Instruction
{{/if}}
{{#unless payment_status "in" "paid, partial"}}
UNPAID, Insert Payment Instruction
{{else unless payment_status "==" "paid"}}
PARTIAL PAID
{{else}}
PAID
{{/unless}}
You can use the condition in the following ways
  • if Statement.
  • if-else Statement.
  • if-else if-else Statement.
  • unless Statement.
  • unless-else Statement.
  • unless-else unless-else Statement.
Below are a few examples :
Example
Description
{{#if payment_status}} {{/if}}
if payment_status is not empty or blank.
{{#if payment_status "==" "paid"}} {{/if}}
if payment_status equal to paid (case-sensitive).
{{#if payment_status "!=" "paid"}} {{/if}}
if payment_status not equal to paid (case-sensitive).
{{#if price ">" 1000}} {{/if}}
If price greater than 1000
{{#if price ">=" 1000}} {{/if}}
If price greater than and equal to 1000
{{#if price "<" 1000}} {{/if}}
If price lesser than 1000
{{#if price "<=" 1000}} {{/if}}
If price lesser than 1000
{{#unless month "in" "January, February, March"}} {{/unless}}
unless the month is January, February and March
{{#unless payment_status}} {{/unless}}
unless the payment_status is not zero
{{#unless payment_status "==" "paid"}} {{/unless}}
unless the payment_status is paid
{{#unless payment_status "!=" "paid"}} {{/unless}}
unless payment_status is not equal to paid
{{#unless price ">" 1000}} {{/unless}}
unless price is greater than 1000

Hiding Empty Sections & Lines

You can use conditional statements to hide sections/lines that do not have a value.
Hide section examples
1. Name: {{name}}
{{#if address}}Address: {{address}}{{/if}}
2. Name:{{name}}
{{#unless address "==" ""}}Address: {{address}}{{/unless}}
In the above example when the Address is empty, the Address section will be removed.
Hide empty lines examples
1. {{name}}{{#if address}}
{{address}}{{/if}}
{{city}}{{country}}
2. {{name}}{{#unless address "==" ""}}
{{address}}{{/unless}}
{{city}}{{country}}
In the above example when the Address is empty, the Address empty line will be removed to achieve better document formatting.

Lists (Loops)

Lists are used when you want to print a list of items in your document. Docupilot supports three types of loops in document builder.
  • Simple List
  • Advanced List
  • Bulleted List
  • Numbered List

Simple Loop

{{#each items}}
{{this}}
{{/each}}
Output
Apple
Orange
Strawberry

Advanced Loop

You can use advanced loop, if you want to print list of items like line items. Think of this as a sub-form with multiple rows in your main form.
{{#each line_items}}
{{name}} ${{price}}
{{/each}}
Output
Iphone6 $799
Iphone7 $899
Iphone8 $999

Bulleted List

• {{#list services}}{{this}}{{/list}}

Numbered List

1. {{#list services}}{{this}}{{/list}}
Please use bullet insertion buttons from editor's tools pane for Bulleted and Numbered lists to work

Tables

A table is similar to an advanced list, but the data will be rendered in a table. For example, if you want to generate a invoice, you may want display a table with all the line items.
name
quantity
price
{{#each line_items }}
{{ name }}
{{ quantity }}
{{ price }}
{{/each}}

Hiding Empty Tables

You can use IF condition to hide empty tables, you should wrap the entire table inside a IF condition.
{{#if line_items}}
{{!...INSERT THE ABOVE TABLE IN THIS LINE...}}
{{/if}}

Filtering rows in a Table based on empty column value

name
quantity
price
{{#each line_items }}{{#if quantity}}
{{ name }}
{{ quantity }}
{{ price }}
{{/if}}{{/each}}
If the value for quantity is empty in any row, it will be skipped in the output table.

Filtering rows in a Table based on a column value

name
quantity
price
{{#each line_items }}{{#if name "!=" "Iphone"}}
{{ name }}
{{ quantity }}
{{ price }}
{{/if}}{{/each}}
If the value for name is Iphone in any row, it will be skipped in the output table.

Inserting a dynamic image

This will be helpful if you want to insert a dynamic image in the document.
Format : {{insert_image image1 width="width" height="height"}}
Order
Name
Description
Mandatory
1
width
Image width
No
2
height
Image height
No
Example
Description
{{insert_image image1 width="300" height="200"}}
Image Width: 300px , Height: 200px
{{insert_image image1 width="300"}}
The height is automatically adjusted to keep the proportions
{{insert_image image1 height="300"}}
The width is automatically adjusted to keep the proportions
The image URL need to be publicly accessible so we can download and insert it in the document.

Inserting a QR Code

This will be helpful if you want to insert a dynamic QR code from your data in the document.
Format: {{insert_qr url size="qr_size" margin="qr_margin" color="qr_color(in hex values)"}}
Order
Name
Description
Mandatory
1
size
QR Image size
No Default: 100
2
margin
QR Image height (px)
No
Default: 4
3
color
Color of the QR
No Default: #000000
Example: {{insert_qr url size="100" margin="1"}}
100 X 100 with margin 1 & value https://docupilot.app
Example: {{insert_qr url size="100"}}
100 X 100 with default margin 4 & value https://docupilot.app/
Example: {{insert_qr url margin="7"}}
Qr with margin 7
Example: {{insert_qr url color="0000FF"}}
QR with color blue & value https://docupilot.app/
The color of the QR should be given in hex coding only.

Inserting a Barcode

This will be helpful if you want to insert a barcode from your data in the document.
Format: {{insert_barcode name format="barcode_format" bar_width="width" height="height" margin="barcode_margin" color="color" background_color="bg_color" display_value=true/false}}
Order
Name
Description
Mandatory
Default Value
1
barcode_format
Barcode formats
CODE128
CODE39
No
CODE128
2
bar_width
The bar_width option is the width of a single bar.
No
2
3
height
The height of the barcode.
No
100
4
barcode_margin
Set the space margin around the barcode
No
10
4
color
Set the color of the bars and the text.
No
#000
5
bg_color
Set the background of the barcode.
No
#fff
6
label
Displaying the label below the barcode
No
true
Example: {{insert_barcode item_name}}
CODE128 Format
Example: {{insert_barcode name format="CODE39"}}
CODE39 Format
Example: {{insert_barcode name bar_width="3"}}
Code 128 Format Barcode with width 3
Example: {{insert_barcode name format="CODE128" bar_width="2" height="25"}}
Example: {{insert_barcode name format="CODE128" bar_width="2" display_value= false}}
Example: {{insert_barcode name height="50" margin="10"}}
Code 128 barcode with height 50 px and margin 10
Example: {{insert_barcode name height="50" color="FF0000"}}
Code 128 barcode with height 50 px and red in color

Inserting Google Maps

This will be helpful if you want to insert Google Maps from your data in the document.
Format: {{insert_map Address width="width" height="height" map_type="maptype"}}
Order
Name
Description
Mandatory
Default Value
1
width
Width of the image (px)
No
600
2
height
Height of the image (px)
No
300
3
map type
Map types
roadmap
satellite
hybrid
terrain
No
roadmap
4
Zoom
Zoom into the image
No
13
Example: {{insert_map Location width="500" height="500" map_type="roadmap"}}
Location Value is Manchester
Example: {{insert_map Location map_type="roadmap" zoom= "20"}}
Location value is Manchester, with map type as road map and a Zoom set to 20
Example: {{insert_map Location height="300" zoom= "5"}}
Location value is Manchester with height as 300 px and zoom set to 5

Grid Helper

The Grid Helper will render the list input in a grid format, with specified column size.
Syntax: {{#grid items col_size=3}} {{@item1.title}}{{@item2.title}}{{@item3.title}} {{/grid}}
Example :
Grid helper

Page Break

If you want to format your document into multiple pages properly, you can use the page break option. The content after the page break will begin in a new page.

Google Fonts

Docupilot supports all Google fonts to help you maintain your branding. Once you finish building your document, you will need to add a small code snippet by clicking on the source button in the document editor. You will need to change the font family accordingly to the choice of your fonts. You can find the font family here https://fonts.google.com/.
<style type="text/css">body{
font-family: 'Tangerine', serif;
}
</style>
Google Fonts
Sometimes the document builder will not show the specified font but the document will be generated in the specified font.

Page Margins

Docupilot allows you to adjust the size of the top, bottom, left, right page margins in inches. You can set the margins in preferences -> Advance settings.
The default margin is 0.4 inches on all sides. You can also set it to zero.
Page Margins

Comments

You can add comments in the document template to help your future editors. The comments will be removed in the output document.
Comments Syntax : {{!Your comments here}}