--- layout: page title: pdf_options permalink: /parameters/pdf_options/ parent: Parameters nav_order: 100 description: >- Customize PDF output with page size, margins, and scaling options --- # PDF Options {: .no_toc } {: .fs-9 } Generate customized PDF documents from HTML {: .fs-6 .fw-300 }
## Overview When generating PDFs, use the `pdf_options` parameter to control page size, margins, scaling, and background printing. You can use either of these flows: - **Create an image, then render it as a PDF:** Create the image normally, then add `.pdf` to the returned image URL. - **Render it as a PDF directly:** Include [`format: "pdf"`](/parameters/format/) when creating the image. The URL in the creation response will already end in `.pdf`. In both cases, the PDF is rendered and saved separately when its URL is requested. The `format` parameter only controls the URL returned by the creation request; it does not change the stored image definition. ## Parameters The `pdf_options` object accepts the following properties: | Property | Type | Description | |:---------|:-----|:------------| | **page_width** | `String` | Width of the page with unit (px, in, cm, mm, pt). Example: `8.5in` | | **page_height** | `String` | Height of the page with unit (px, in, cm, mm, pt). Example: `11in` | | **scale** | `Number` | Scale of the webpage rendering. Range: `0.1` to `2`. Default: `1` | | **margins** | `Array` | Page margins as 4 values: [top, right, bottom, left]. Example: `["1cm", "1cm", "1cm", "1cm"]` | | **print_background** | `Boolean` | Whether to print background graphics. Default: `false` | ## Common page sizes | Size | Dimensions | Use Case | |:-----|:-----------|:---------| | Letter | `8.5in` x `11in` | US standard documents | | A4 | `210mm` x `297mm` | International standard | | Legal | `8.5in` x `14in` | Legal documents | | A5 | `148mm` x `210mm` | Smaller documents | ## Example usage ### Create an image, then render it as a PDF Create an image and access it as PDF: ```bash curl -X POST https://hcti.io/v1/image -u 'UserID:APIKey' \ -H "Content-Type: application/json" \ -d '{ "html": "

Invoice #1234

Thank you for your purchase.

" }' ``` Then append `.pdf` to the returned URL: ``` https://hcti.io/v1/image/abc123.pdf ``` ### Return a PDF URL directly Set `format` to `pdf` when creating the image: ```bash curl -X POST https://hcti.io/v1/image -u 'UserID:APIKey' \ -H "Content-Type: application/json" \ -d '{ "html": "

Invoice #1234

Thank you for your purchase.

", "format": "pdf", "pdf_options": { "print_background": true } }' ``` The response URL already includes the PDF extension: ```json { "url": "https://hcti.io/v1/image/abc123.pdf", "id": "abc123" } ``` Requesting that URL renders and returns the separately saved PDF. ### Letter size with margins ```json { "html": "
...
", "pdf_options": { "page_width": "8.5in", "page_height": "11in", "margins": ["0.5in", "0.5in", "0.5in", "0.5in"], "print_background": true } } ``` ### A4 document ```json { "html": "
...
", "pdf_options": { "page_width": "210mm", "page_height": "297mm", "margins": ["20mm", "15mm", "20mm", "15mm"], "print_background": true } } ``` ### Scaled content If your HTML is too large for the page, use scale to fit: ```json { "html": "
Wide content...
", "pdf_options": { "page_width": "8.5in", "page_height": "11in", "scale": 0.75, "print_background": true } } ``` ## Common use cases ### Invoices and receipts ```json { "html": "

Invoice

...
", "css": ".invoice { font-family: Arial; padding: 40px; }", "pdf_options": { "page_width": "8.5in", "page_height": "11in", "margins": ["0.75in", "0.75in", "0.75in", "0.75in"], "print_background": true } } ``` ### Certificates ```json { "html": "
...
", "css": ".certificate { background: linear-gradient(...); }", "pdf_options": { "page_width": "11in", "page_height": "8.5in", "print_background": true } } ``` ### Reports ```json { "html": "

Monthly Report

...
", "pdf_options": { "page_width": "210mm", "page_height": "297mm", "margins": ["25mm", "20mm", "25mm", "20mm"], "print_background": true } } ``` ## Best practices 1. **Always set print_background** if you have CSS backgrounds, gradients, or colors 2. **Use appropriate margins** for your content - typically 0.5-1 inch for printable documents 3. **Test your page size** before bulk generation 4. **Use print media queries** in your CSS for optimal PDF styling: ```css @media print { .no-print { display: none; } body { font-size: 12pt; } } ``` ## Units All size values support these units: | Unit | Description | Example | |:-----|:------------|:--------| | `px` | Pixels | `612px` | | `in` | Inches | `8.5in` | | `cm` | Centimeters | `21cm` | | `mm` | Millimeters | `210mm` | | `pt` | Points (1/72 inch) | `72pt` | {% include hint.md title="Tip" text="For print documents, use inches (in) or millimeters (mm) for more accurate sizing." %} {% include code_footer.md version=2 %}