PDF Writer Custom Tags
The following custom tags can be included in Web Page Views to manipulate the output when converting to PDF:
Contents
List of Custom Tags (pd4ml)
- style="pd4ml-display:none" or style="pd4ml-display:block": Controls whether a HTML element will be included or not included in the PDF.
- style="PAGE-BREAK-inside: avoid": Prevents an HTML element from being broken by a page break. Note: If the element is more than a page in length this setting cannot be applied and will be ignored.
- <pd4ml:page.break>: inserts a page break at this location. We recommend using the SmartFields PDF formatting setting for inserting page breaks between custom fields.
- Options:
- ifSpaceBelowLessThan= pixels: allows to suppress the page break if the available space on the current page is more than the specified value.
- htmlWidth=pixels: forces PD4ML to change current htmlWidth (screenWidth) value and to affect HTML-to-PDF scaling factor. “reset” returns htmlWidth to the initial state.
- htmlWidth="reset"
- pageFormat="rotate"
- pageFormat="WxH"
- pageFormat="reset"
- next="even - odd"
- pageCounter=pagenum
- Options:
- <pd4ml:page.header> </pd4ml:page.header>: Content between tags will be used as the page header.
- Options:
- scope="scope": explicitly defines pages where the header should appear. Example: scope="odd,5,15-25,45+,skiplast"
- height="height"
- width="width"
- style="associated style info"
- $[page], $[total] and $[title]: inserts current page number, total number of pages, and document title (respectively)
- Options:
- <pd4ml:page.footer> first page footer. page $[page] of $[total]</pd4ml:page.footer>: Content between tags will be used as the page footer (see Example below). Affects all subsequent pages (unless Scope option is defined)
- Options: same as pd4ml:page.header tag.
- <pd4ml:toc>: table of contents.
- Options:
- pncorr="number": a correction value to add to page numbers
- Options:
- <pd4ml:page.break/>: insert this for a PDF page break.
Examples
- The following HTML can be added to a Web Page View document to be used as the page header and footer. A different header is defined for the first page using the scope option.
- Only the header for the first page will be displayed in the Web Page View HTML view. The header for subsequent pages and the page footer are hidden using <div style="display:none;pd4ml-display:block">
<pd4ml:page.header scope="1"> <div style="margin-top: 30px;margin-left:30px;margin-right:30px;margin-bottom:30px"> <img src="/files/12345/f51222/HeaderImage.jpg" width="250px"> </div> </pd4ml:page.header> <div style="display:none;pd4ml-display:block"> <pd4ml:page.header scope="2+"> <div style="margin-top: 30px;margin-left:30px;margin-right:30px;margin-bottom:30px"> <table width="100%"> <tr> <td><img src="/files/12345/f51222/HeaderImage.jpg" width="250px"></td> <td style="text-align:right">page $[page] of $[total]</td> </tr> </table> </div> </pd4ml:page.header> <pd4ml:page.footer> <div style="margin-top:30px;margin-left:30px;margin-right:30px;margin-bottom:30px"> <table width="100%"> <tr> <td><img src="/files/12345/f51221/FooterImage.jpg" width="75px"></td> <td style="text-align:right"><span style='font-size:9.0pt;line-height:115%;color:gray'>SmartSimple Software >></span> <span style='font-family:"Arial Black","sans-serif";color:#008386'> <link>www.smartsimple.com</link></span> </td> </tr> </table></div> </pd4ml:page.footer> </div>
- The following will show the table in the HTML view, but it will not be included in the PDF:
<table border="1" style="display:block;pd4ml-display:none"> <tr><th>Header 1</th><th>Header 2</th></tr> <tr><td>row 1, cell 1</td><td>row 1, cell 2</td></tr> <tr><td>row 2, cell 1</td><td>row 2, cell 2</td></tr> </table>
- The following will prevent a table from spanning 2 pages (unless the table is more than 1 page in length) you can also specify table rows not to break across pages using the same technique:
<table border="1" style="PAGE-BREAK-inside: avoid"> <tr><th>Activity</th><th>Owner</th></tr> [#(?object=activity) <tr><td>@subject@</td><td>@owner@</td></tr> #] </table>
Page Format
To generate PDFs in a specific format within the body of the Web Page View, add the appropriate tag below:
- <!--Use Landscape--> - will set the HTML width based on the paper type.
- <!--Use Letter--> - will set the page width to 971.
- <!--Use Legal--> - will set the page width to 1235.
Table Size
Recommended table sizes are as follows:
- Letter 700 pixels wide
- Letter (landscape) 950 pixels wide
Special Characters
Most western Latin Unicode characters will be displayed normally. If your PDF will contain non-Latin characters such as Japanese, Korean or Greek, then the PDF writer must be told to use TTF (True Type Font) and the font should be specified.
- <!--Use TTF-->
See here for more information
Specify PDF File Name
If the syntax <!--filename='WPF - filename'--> is included in the HTML Template, when saved as a PDF, the PDF filename will default to 'WPF - filename.pdf'.
Variables such as @name@ can be used (ex. <!--filename='WPF - @name@'-->) to dynamically set the resultant PDF filename.
Sample HTML Template
<html> <head> <style type="text/css"> <!-- body {font-family: Arial, Times New Roman;} .overflow {width: 700px; word-wrap: break-word;} .white {color: #ffffff;} .spacer {font-family: Arial, Helvetica, sans-serif; font-size: 10px; color: #FFF;} --> </style> </head> <body bgcolor="#FFFFFF" topmargin="25" bottommargin="25" leftmargin="30" rightmargin="30"> <!--Use Letter--><!--Use TTF--><!--filename='WPF - filename'--> <!--START: Header and Footer when converted to PDF--> <pd4ml:page.header> <table width="700px" border="0" cellspacing="0" cellpadding="0" align="center"> <tr> <td><div class="overflow"><strong>@type@ - @year(fullstartdate)@</strong></div></td> </tr> </table> </pd4ml:page.header> <pd4ml:page.footer> <div style="pd4ml-display:block;display:none;margin-top: 30px;margin-left:30px;margin-right:30px;margin-bottom:30px"> <table width="700px" align="center"> <tr> <td style="text-align:right">page $[page] of $[total]</td> </tr> </table> </div> </pd4ml:page.footer> <!--END Header and Footer for PDF--> <pd4ml> <table width="700" border="0" cellspacing="0" cellpadding="0" align="center" style="PAGE-BREAK-inside: avoid;"> <tr> <td valign="top"><div class="overflow">Page 1 text goes here</div></td> </tr> </table> <div class="spacer">.</div> <pd4ml:page.break/> <table width="700" border="0" cellspacing="0" cellpadding="0" align="center" style="PAGE-BREAK-inside: avoid;"> <tr> <td valign="top"><div class="overflow">Page 2 text goes here</div></td> </tr> </table> </pd4ml> </body> </html>
See Also
- http://pd4ml.com/html.htm (external website)
- http://pd4ml.com/taglib/pd4ml/tld-summary.html (external website)
- Web Page View
- Convert Special Characters to PDF
- PD4ML Troubleshooting Checklist