http://www.international-presence.com/images/nodes/dataformatter.png
To create a PDF document create a new custom data formatter in your task. Be sure to select 'PDF Document' as the 'Type of document to produce'.
This will then create the template for your PDF instructions.
http://www.international-presence.com/images/docs/pdf/dataformatterscreen.png
As usual if you enter < then the helper will appear with a list of options and permitted tags for the PDF.
Note it is actually the saving option that tells presence to send these instructions through the PDF formatter to generate the file.
To create a PDF file you need to set the 'Write Output' option to 'Into PDF File'
Saving as 'To File' will store the instructions as pure text.
This is useful if you have a problem and need to send the instructions to us to debug.
http://www.international-presence.com/images/docs/pdf/dataformattersave.png
To create a PDF file we create a series of instructions similar to html.
The language is a well structured html with some extra tags that are specific to the PDF.
Each tag should be terminated with an associated closing tag.
eg a <page> should eventually include a </page>
At present only basic formatting is supported, so no style sheets or inline formatting is allowed.
Contents
Acceptable tags
<pdf>
Denotes the start of the PDF
<document>
Describes the document properties and can have the following optional attributes
userpassword - if added then this is needed to open the pdf file
ownerpassword - if added then this is needed to edit the pdf file
allowprinting - whether the document can be printed (true/false)
allowcopy - whether the document can be copied (true/false)
pagenumbers - whether the document will include automatic page numbers (true/false)
landscape - landscape mode (true/false)
header - image that can appear on every page, aligned at the origin (0,0) eg ".\res\images\ipheader.png"
footer - image that can appear on every page, aligned at the bottom eg ".\res\images\ipfooter.png"
pagesize - eg a1 a2 a3 a4 ledger legal letter note 22,33
marginleft - space for left margin
marginright - space for right margin
margintop - space for top margin
marginbottom - space for bottom margin
<page>
Denotes a new page, so that at any point in the document we can start a new page.
This has similar attributes to the document.
landscape - landscape mode (true/false)
header - image that can appear on every page, aligned at the origin (0,0) eg ".\res\images\ipheader.png"
footer - image that can appear on every page, aligned at the bottom eg ".\res\images\ipfooter.png"
pagesize - eg a1 a2 a3 a4 ledger legal letter note 22,33
marginleft - space for left margin
marginright - space for right margin
margintop - space for top margin
marginbottom - space for bottom margin
thispageonly - dictates whether these are attributes are to be used for subsequent pages or not.
<table>
Similar to html, allows you to create a new table and can have the following attributes
width % The width of the table (as a percentage of the page width)
cellpadding - The spacing between the text and the cell
cellspacing - The spacing between cells in the table
border - Lined border thickness
positionabs - Set if you want to position the table in a specific fixed position
align - left|center|right|justify
bgcolor - The background color of the cell/table
title - The associated title
caption - The associated caption
As in html to define a new row in the table use <tr> and to define a new cell.<td>
You can also use <th> which means that the cell will be at the top of each page when the table carries over.
Cell attributes (for td or th)
colspan - How many columns the cell spans
width % - How wide this cell is as a percentage of the table width
bgcolor - The background color for the cell
align - Alignment of text in the cell (left|center|right|justify)
valign - top|middle|bottom|baseline
nowrap - Set if you want the text in the cell to be on a single line
As in html tables are often used for setting out your content with no borders.
Notice how the document is added into the root element along with the table tag and the first rows (headings).
http://www.international-presence.com/images/docs/pdf/table1.png
Next we iterate over our unique ID for each row (in this case the task id)
http://www.international-presence.com/images/docs/pdf/table2.png
Finally we close the table and the document
http://www.international-presence.com/images/docs/pdf/table3.png
Here is the table created
http://www.international-presence.com/images/docs/pdf/tablepdf.png
<img>
src - url for image
align - alignment on page (left|center|right|justify)
scaleabs - Image will have these exact proportions (width and height) eg scaleabs="100,100"
scalefit - Image will have these sizes but will stay in proportion
image tag - Associated tag
watermark - set to true, this attribute is the same as an absolute position of 0,0
positionabs - Absolute position if you need to precisely position the image
<font>
type - Specify the font from one of 3 built in types, courier|helvetica|times
face - Specify the font type by giving a path to the file name eg, face="c:\\windows\\fonts\\Bell.ttf"
align - left|center|right|justify
valign - top|middle|bottom|baseline
color - Font color
size - Font size in points
positionabs - Absolute position of text between font tags
example <font face="c:\\windows\\fonts\\CURLZ___.TTF" align="right" size="14" color="red">Danger</font>
Checkbox input
It is possible to include checkboxes in the document, these do not have to be within a <form> tag
Example Of UnChecked Checkbox <input type="checkbox"></input> would result in an unchecked check box http://www.international-presence.com/images/docs/pdf/chkbox.png
Example Of Unchecked Checkbox <input type="checkbox" checked="checked"></input> would result in a checked check box http://www.international-presence.com/images/docs/pdf/unchkbox.png
Miscellaneous
h1 h2 h3 h4 h5 h6 - Put this text in a header, eg <h1>Title</h1>
br - line break
hr - horizontal line
bold - Set bold on (also accepts b and strong)
u - underline
i - switch on italics
small - reduce text size
big - increase text size
p - as in html this describes a new paragraph
Lists
ol - ordered list
Example <ol> <li>First</li> <li>Second</li> <li>Third</li> </ol> http://www.international-presence.com/images/docs/pdf/olist.png
ul - unordered list
Example <ul> <li>Unordered information. </li> <li>Ordered information. </li> <li>Definitions. </li> </ul> http://www.international-presence.com/images/docs/pdf/uolist.png
Color
Colors can be defined as one of several labels or by hex as in html if you want more control.
For instance green could be specified as either '#00FF00','green'
Presence recognises the following labels as colors:-
black blue cyan darkgray gray green lightgray magenta orange pink red white yellow
Example Of Colors <font color="#00FF00">I am green text</font> <td color="blue">This cell will have a blue background</td>
Formatting Special Characters
Sometimes you may want to include special characters such as a < or a "
As the document is expecting pure well formatted xml it won't let you do this
so instead you must escape the characters, for instance putting < will result in a <
< <
> >
" "
& &
\n or \t or space
It's also worth noting that several spaces or returns will get replaced with one space as in html.
For behaviour other than that you can use preformatted text.
<pre>The spaces between words will be obeyed</pre> pre preformatted text, so between these tags all spaces and tabs will be obeyed,
whereas normally several spaces or line breaks will be replaced with one space.
Absolute positioning
Sometimes you need to be specific when positioning text:-
If the document is going to be scanned by an ocr reader.
If you wish to position an address so that it appears in the right position in a windowed envelope.
If you want to place text in the border.
In these instances it can be useful to use absolute positioning.
Example Of Absolute positioning <font positionabs="575,822">Signed:_______________</font> <table positionabs="0,0" border="0"> <tr> <td>Origin</td> </tr> </table>
It's worth noting that an A4 page is 595 units across by 842 units down.
Also depending on the table width the table will be pushed left so that it is not hanging off the right hand side of the page.
For instance, if the table width was 50% then the positionabs="500,200" would actually be positioned at 298,200.