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.pdf
  • file (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 IMPLEMENTED
  • ref (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). If paper_width and paper_height are 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_WIDTH
  • paper_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)

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 template
  • footer_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>"