HTML to PDF PHP Examples

This page contains various examples of using the HTML to PDF API in PHP. The examples are complete and fully functional. Read more about how to convert HTML to PDF in PHP.

Basic examples
Advanced examples
Template rendering examples

Basic examples

Convert a web page to a PDF file

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // run the conversion and write the result to a file
    $client->convertUrlToFile("http://www.example.com", "example.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Convert a web page to in-memory PDF

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // run the conversion and store the result into the "pdf" variable
    $pdf = $client->convertUrl("http://www.example.com");

    // at this point the "pdf" variable contains PDF raw data and
    // can be sent in an HTTP response, saved to a file, etc.
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Convert a web page and write the resulting PDF to an output stream

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // create an output stream for the conversion result
    $output_stream = fopen("example.pdf", "wb");

    // check for a file creation error
    if (!$output_stream)
        throw new \Exception(error_get_last()['message']);

    // run the conversion and write the result into the output stream
    $client->convertUrlToStream("http://www.example.com", $output_stream);

    // close the output stream
    fclose($output_stream);
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Convert a local HTML file to a PDF file

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // run the conversion and write the result to a file
    $client->convertFileToFile("/path/to/MyLayout.html", "MyLayout.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Convert a local HTML file to in-memory PDF

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // run the conversion and store the result into the "pdf" variable
    $pdf = $client->convertFile("/path/to/MyLayout.html");

    // at this point the "pdf" variable contains PDF raw data and
    // can be sent in an HTTP response, saved to a file, etc.
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Convert a local HTML file and write the resulting PDF to an output stream

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // create an output stream for the conversion result
    $output_stream = fopen("MyLayout.pdf", "wb");

    // check for a file creation error
    if (!$output_stream)
        throw new \Exception(error_get_last()['message']);

    // run the conversion and write the result into the output stream
    $client->convertFileToStream("/path/to/MyLayout.html", $output_stream);

    // close the output stream
    fclose($output_stream);
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Convert a string containing HTML to a PDF file

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // run the conversion and write the result to a file
    $client->convertStringToFile("<html><body><h1>Hello World!</h1></body></html>", "HelloWorld.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Convert a string containing HTML to in-memory PDF

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // run the conversion and store the result into the "pdf" variable
    $pdf = $client->convertString("<html><body><h1>Hello World!</h1></body></html>");

    // at this point the "pdf" variable contains PDF raw data and
    // can be sent in an HTTP response, saved to a file, etc.
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Convert a string containing HTML and write the resulting PDF to an output stream

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // create an output stream for the conversion result
    $output_stream = fopen("HelloWorld.pdf", "wb");

    // check for a file creation error
    if (!$output_stream)
        throw new \Exception(error_get_last()['message']);

    // run the conversion and write the result into the output stream
    $client->convertStringToStream("<html><body><h1>Hello World!</h1></body></html>", $output_stream);

    // close the output stream
    fclose($output_stream);
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Get info about the current conversion

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setDebugLog(true);

    // run the conversion and write the result to a file
    $client->convertFileToFile("/path/to/MyLayout.html", "MyLayout.pdf");
    
    // print URL to the debug log
    echo "Debug log url: " . $client->getDebugLogUrl() . "\n";
    
    // print the number of available conversion credits in your account
    echo "Remaining credit count: " . $client->getRemainingCreditCount() . "\n";
    
    // print the number of credits consumed by the conversion
    echo "Consumed credit count: " . $client->getConsumedCreditCount() . "\n";
    
    // print the unique ID of the conversion
    echo "Job id: " . $client->getJobId() . "\n";
    
    // print the total number of pages in the output document
    echo "Page count: " . $client->getPageCount() . "\n";
    
    // print the size of the output in bytes
    echo "Output size: " . $client->getOutputSize() . "\n";
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Advanced examples

Customize the page size and the orientation

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setPageSize("Letter");
    $client->setOrientation("landscape");
    $client->setNoMargins(true);

    // run the conversion and write the result to a file
    $client->convertUrlToFile("http://www.example.com", "letter_landscape.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Put the source URL in the header and the page number in the footer

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setHeaderHeight("15mm");
    $client->setFooterHeight("10mm");
    $client->setHeaderHtml("<a class='pdfcrowd-source-url' data-pdfcrowd-placement='href-and-content'></a>");
    $client->setFooterHtml("<center><span class='pdfcrowd-page-number'></span></center>");
    $client->setMarginTop("0");
    $client->setMarginBottom("0");

    // run the conversion and write the result to a file
    $client->convertUrlToFile("http://www.example.com", "header_footer.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Create fillable PDF form

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setEnablePdfForms(true);

    // run the conversion and write the result to a file
    $client->convertStringToFile("<html><body>Enter name:<input type=text></body></html>", "form.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Zoom the HTML document

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setScaleFactor(300);

    // run the conversion and write the result to a file
    $client->convertUrlToFile("http://www.example.com", "zoom_300.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Set PDF metadata

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setAuthor("Pdfcrowd");
    $client->setTitle("Hello World");
    $client->setSubject("Demo");
    $client->setKeywords("Pdfcrowd,demo");

    // run the conversion and write the result to a file
    $client->convertUrlToFile("http://www.example.com", "with_metadata.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Create a Powerpoint like presentation from an HTML document

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setPageLayout("single-page");
    $client->setPageMode("full-screen");
    $client->setInitialZoomType("fit-page");
    $client->setOrientation("landscape");
    $client->setNoMargins(true);

    // run the conversion and write the result to a file
    $client->convertUrlToFile("https://pdfcrowd.com/api/", "slide_show.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Convert an HTML document section

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setElementToConvert("#main");

    // run the conversion and write the result to a file
    $client->convertUrlToFile("https://pdfcrowd.com/api/", "html_part.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Inject an HTML code

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setCustomJavascript("el=document.createElement('h2'); el.textContent='Hello from Pdfcrowd API'; el.style.color='red'; el_before=document.getElementsByTagName('h1')[0]; el_before.parentNode.insertBefore(el, el_before.nextSibling)");

    // run the conversion and write the result to a file
    $client->convertUrlToFile("http://www.example.com", "html_inject.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Convert a responsive web page as it appears on a large device

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setViewportWidth(992);
    $client->setRenderingMode("viewport");
    $client->setSmartScalingMode("viewport-fit");
    $client->setNoMargins(true);

    // run the conversion and write the result to a file
    $client->convertUrlToFile("https://getbootstrap.com/", "bootstrap.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Create an in-memory archive (ZIP) and convert it

<?php
require "pdfcrowd.php";
require "vendor/autoload.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // create ZIP archive
    $options = new ZipStream\Option\Archive();
    $in_stream = fopen("php://memory", "rw");
    $options->setOutputStream($in_stream);
    $zip = new ZipStream\ZipStream("stream.zip", $options);

    // add HTML content to the archive
    $zip->addFile("index.html", "<html>
        <head>
            <style>
             @font-face
             {
                 font-family: 'OpenSans';
                 src: url(fonts/OpenSans.ttf) format('truetype');
             }
    
             h1
             {
                 font-family: OpenSans;
             }
            </style>
        </head>
        <body>
            <h1>Hello World</h1>
            <img src='images/logo.png'>
        </body>
    </html>");

    # add required local files to the archive
    $zip->addFileFromPath("fonts/OpenSans.ttf", "/your-path-to/fonts/OpenSans.ttf");
    $zip->addFileFromPath("images/logo.png", "/your-path-to/images/logo.png");

    $zip->finish();
    fseek($in_stream, 0);

    // create an output stream for the conversion result
    $output_stream = fopen("HelloFromZip.pdf", "wb");

    // check for a file creation error
    if (!$output_stream)
        throw new \Exception(error_get_last()['message']);

    // run the conversion and write the result into the output stream
    $client->convertStreamToStream($in_stream, $output_stream);

    // close the output stream
    fclose($output_stream);
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Renderer debugging - highlight HTML elements

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setCustomJavascript("libPdfcrowd.highlightHtmlElements({backgroundColor: 'rgba(255, 191, 0, 0.1)', borderColor:null})");

    // run the conversion and write the result to a file
    $client->convertUrlToFile("http://www.example.com", "highlight_background.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Renderer debugging - borders with spacing around HTML elements

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setCustomJavascript("libPdfcrowd.highlightHtmlElements({borderColor: 'orange', backgroundColor: null, padding: '4px', margin: '4px'})");

    // run the conversion and write the result to a file
    $client->convertUrlToFile("http://www.example.com", "highlight_borders.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Template rendering Examples

Create PDF from JSON data

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setDataString('{
            "name": "World",
            "product": "Pdfcrowd API"
        }');

    // run the conversion and write the result to a file
    $client->convertStringToFile("Hello {{ name }} from {{ product }}", "output.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Create PDF from XML data

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setDataString('<?xml version="1.0" encoding="UTF-8"?>
        <data>
          <name>World</name>
          <product>Pdfcrowd API</product>
        </data>');

    // run the conversion and write the result to a file
    $client->convertStringToFile("Hello {{ data.name }} from {{ data.product }}", "output.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Create PDF from YAML data

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setDataString("name: World
product: Pdfcrowd API");

    // run the conversion and write the result to a file
    $client->convertStringToFile("Hello {{ name }} from {{ product }}", "output.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>

Create PDF from CSV data

<?php
require "pdfcrowd.php";

try
{
    // create the API client instance
    $client = new \Pdfcrowd\HtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d");

    // configure the conversion
    $client->setDataString("name,product
World,Pdfcrowd API");

    // run the conversion and write the result to a file
    $client->convertStringToFile("Hello {{ name }} from {{ product }}", "output.pdf");
}
catch(\Pdfcrowd\Error $why)
{
    // report the error
    error_log("Pdfcrowd Error: {$why}\n");

    // rethrow or handle the exception
    throw $why;
}

?>