Print reference¶
Print are created sending a POST request to /prints endpoint; the
full print object with print id is returned with 201 status.
{
"name": "concatenated-filename.pdf",
"src": [
{
"name": "filename.pdf",
"url": "https://google.fr",
"file": false
}
],
"operations": [
"concatenate",
"normalize",
"upload"
],
"hook": "https://echo.solidev.net/",
"params": {
"header_display": true,
"footer_display": true,
"margin_top": 80,
"margin_bottom": 60,
"header_template": "...",
"footer_template": "...",
"paper_format": "a2"
}
}
src sources array¶
each source is an object with following fields :
Mandatory fields :
url(string) : mandatory, url of page to be printed or zip object containing a index.html page to be printed
Optional fields :
name(string) : output filename, defaults to print_XXXX.pdffile(bool) : print as file (page or zip content is downloaded before printing as file://)pages(string) : pages interval, comma separated (example :1-3, 2, 5); all pages if empty or not given - NOT IMPLEMENTEDref(string) : source reference, not used for printing
operations¶
Array of operations
hook¶
Url of hook, receiving POST messages with the following json content :
{
"print": "print uuid",
"status": "current status",
"progress": 100, // 0-100 progress
"result": {
"pages": [
{"ref": "", "url": "result url"},
{"ref": "", "url": "result url"},
],
"zip": {"url": "zip result url"},
"print": {"url": "concatenated result url"}
}
}
params : print parameters¶
PDF print parameters can be given for each print, or globally :
Global parameters¶
media: media type to print (css media types, screen or print) (default:print, parameter :printer.pdf.params.media, environment :GPD_PRINTER_PDF_PARAMS_MEDIA)background: print backgrounds (true, false) (default :true, parameter :printer.pdf.params.background, environment :GPD_PRINTER_PDF_PARAMS_BACKGROUND)scale: print scale (floating number) (default :1.0, parameter :printer.pdf.params.scale, environment :GPD_PRINTER_PDF_PARAMS_SCALE)
Paper parameters¶
orientation: print paper orientation (portrait / landscape, any other value than portrait means landscape) (default :portrait, parameter:printer.pdf.params.orientation, environment:GPD_PRINTER_PDF_PARAMS_ORIENATION)paper_format: print paper format name (A10 to 4A0, B10 to B0, C10 to C0) (default :A4, parameter:printer.pdf.params.paper_format, environment:GPD_PRINTER_PDF_PARAMS_PAPERFORMAT). Ifpaper_widthandpaper_heightare provided and not null, the paper format is ignored.paper_width: paper width in millimeters (default :0, parameter :printer.pdf.params.paper_width, environment:GPD_PRINTER_PDF_PARAMS_PAPER_WIDTHpaper_height: paper height in millimeters (default :0, parameter :printer.pdf.params.paper_height, environment:GPD_PRINTER_PDF_PARAMS_PAPER_HEIGHT
Margins¶
margin_top: top margin in mm (default : 0, parameter :printer.pdf.params.margin_top, environment :GPD_PRINTER_PDF_PARAMS_MARGIN_TOP)margin_bottom: bottom margin in mm (default : 0, parameter :printer.pdf.params.margin_bottom, environment :GPD_PRINTER_PDF_PARAMS_MARGIN_BOTTOM)margin_left: left margin in mm (default : 0, parameter :printer.pdf.params.margin_left, environment :GPD_PRINTER_PDF_PARAMS_MARGIN_LEFT)margin_right: right margin in mm (default : 0, parameter :printer.pdf.params.margin_right, environment :GPD_PRINTER_PDF_PARAMS_MARGIN_RIGHT)
Header / footer¶
Those parameters have no default value (no header/footer display if nothing is provided in print query)
header_display: display header (true / false)header_template: header html templatefooter_display: display footer (true / false)footer_template: footer html template
Header & footer tips & tricks :
- pdf page header & footer don’t load external resources : use base64 data for images, and some other tricks can be useful (source)
- pdf page header & footer are not displayed if they intersect with page content : use margin_top and margin_bottom (source)
- background colors are not displayed unless
html { -webkit-print-color-adjust: exact;}is added in header style : (source) - chrome adds default padding to header & footer, to disable it, use
style
#header, #footer { padding: 0 !important; }: (source) - some css units may be scaled up / down (to be checked) : (source)
- page number / totalPages and other special header/footer special css classes are not displayed, should be fixed soon (source)
Example footer / header :
<style>
html {
-webkit-print-color-adjust: exact;
}
#header, #footer {
padding: 0 !important;
}
.pgn {
width: 100vw;
height: 1cm;
background-color: #FF0000;
border: 1px solid red;
font-size: 5mm;
text-align: center
}
</style>
<div class='pgn'>
<span class='pageNumber'>
</span> of <span class='totalPages'>
</span>
RESERVED TO ME
</div>"