Documentation

PDF to HTML PHP Examples

These examples demonstrate common PDF to HTML API workflows in PHP.


Basic examples

PDF file to HTML file

<?php
require "pdfcrowd.php";

try
{
    // Create an API client instance.
    $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

    // Run the conversion and save the result to a file.
    $client->convertFileToFile("/path/to/logo.pdf", "logo.html");
}
catch(\Pdfcrowd\Error $why)
{
    error_log("PDFCrowd Error: {$why}");
    throw $why;
}

?>

PDF file to in-memory HTML

<?php
require "pdfcrowd.php";

try
{
    // Create an API client instance.
    $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

    // Run the conversion and store the result in the `html` variable.
    $html = $client->convertFile("/path/to/logo.pdf");

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

?>

PDF file to HTML stream

<?php
require "pdfcrowd.php";

try
{
    // Create an API client instance.
    $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

    // Create an output stream for the conversion result
    $output_stream = fopen("logo.html", "wb");

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

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

    // Close the output stream.
    fclose($output_stream);
}
catch(\Pdfcrowd\Error $why)
{
    error_log("PDFCrowd Error: {$why}");
    throw $why;
}

?>

PDF url to HTML file

<?php
require "pdfcrowd.php";

try
{
    // Create an API client instance.
    $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

    // Run the conversion and save the result to a file.
    $client->convertUrlToFile("https://pdfcrowd.com/static/pdf/apisamples/invoice.pdf", "invoice.html");
}
catch(\Pdfcrowd\Error $why)
{
    error_log("PDFCrowd Error: {$why}");
    throw $why;
}

?>

PDF url to in-memory HTML

<?php
require "pdfcrowd.php";

try
{
    // Create an API client instance.
    $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

    // Run the conversion and store the result in the `html` variable.
    $html = $client->convertUrl("https://pdfcrowd.com/static/pdf/apisamples/invoice.pdf");

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

?>

PDF url to HTML stream

<?php
require "pdfcrowd.php";

try
{
    // Create an API client instance.
    $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

    // Create an output stream for the conversion result
    $output_stream = fopen("invoice.html", "wb");

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

    // run the conversion and write the result to the output stream.
    $client->convertUrlToStream("https://pdfcrowd.com/static/pdf/apisamples/invoice.pdf", $output_stream);

    // Close the output stream.
    fclose($output_stream);
}
catch(\Pdfcrowd\Error $why)
{
    error_log("PDFCrowd Error: {$why}");
    throw $why;
}

?>

In-memory PDF to HTML file

<?php
require "pdfcrowd.php";

try
{
    // Create an API client instance.
    $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

    // Run the conversion and save the result to a file.
    $client->convertRawDataToFile(file_get_contents("/path/to/hello_world.pdf"), "logo.html");
}
catch(\Pdfcrowd\Error $why)
{
    error_log("PDFCrowd Error: {$why}");
    throw $why;
}

?>

In-memory PDF to in-memory HTML

<?php
require "pdfcrowd.php";

try
{
    // Create an API client instance.
    $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

    // Run the conversion and store the result in the `html` variable.
    $html = $client->convertRawData(file_get_contents("/path/to/hello_world.pdf"));

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

?>

In-memory PDF to HTML stream

<?php
require "pdfcrowd.php";

try
{
    // Create an API client instance.
    $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

    // Create an output stream for the conversion result
    $output_stream = fopen("logo.html", "wb");

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

    // run the conversion and write the result to the output stream.
    $client->convertRawDataToStream(file_get_contents("/path/to/hello_world.pdf"), $output_stream);

    // Close the output stream.
    fclose($output_stream);
}
catch(\Pdfcrowd\Error $why)
{
    error_log("PDFCrowd Error: {$why}");
    throw $why;
}

?>

Get info about the current conversion

<?php
require "pdfcrowd.php";

try
{
    // Create an API client instance.
    $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

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

    // Run the conversion and save the result to a file.
    $client->convertFileToFile("/path/to/logo.pdf", "logo.html");
    
    // print URL pointing to the debug log for this request.
    echo "Debug log url: " . $client->getDebugLogUrl() . "\n";
    
    // print number of conversion credits remaining in your account.
    echo "Remaining credit count: " . $client->getRemainingCreditCount() . "\n";
    
    // print number of credits consumed for this conversion.
    echo "Consumed credit count: " . $client->getConsumedCreditCount() . "\n";
    
    // print unique identifier assigned to this conversion job.
    echo "Job id: " . $client->getJobId() . "\n";
    
    // print total number of pages in the output document.
    echo "Page count: " . $client->getPageCount() . "\n";
    
    // print size of the output data in bytes.
    echo "Output size: " . $client->getOutputSize() . "\n";
}
catch(\Pdfcrowd\Error $why)
{
    error_log("PDFCrowd Error: {$why}");
    throw $why;
}

?>

PHP website examples

PDF file to HTML in PHP website

<?php
require 'pdfcrowd.php';

// The recommended method is POST.
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    try {
        // Create an API client instance.
        $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

        // Run the conversion.
        $html = $client->convertFile("/path/to/logo.pdf");

        // Set HTTP response headers.
        header("Content-Type: text/html");
        header("Cache-Control: no-cache");
        header("Accept-Ranges: none");
        header("Content-Disposition: attachment; filename*=UTF-8''" . rawurlencode("logo.html"));

        echo $html;
    }
    catch(\Pdfcrowd\Error $why) {
        // Report the error.
        header("Content-Type: text/plain");
        http_response_code($why->getStatusCode());
        echo "PDFCrowd Error: {$why}";
    }
}

?>

PDF url to HTML in PHP website

<?php
require 'pdfcrowd.php';

// The recommended method is POST.
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    try {
        // Create an API client instance.
        $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

        // Run the conversion.
        $html = $client->convertUrl("https://pdfcrowd.com/static/pdf/apisamples/invoice.pdf");

        // Set HTTP response headers.
        header("Content-Type: text/html");
        header("Cache-Control: no-cache");
        header("Accept-Ranges: none");
        header("Content-Disposition: attachment; filename*=UTF-8''" . rawurlencode("invoice.html"));

        echo $html;
    }
    catch(\Pdfcrowd\Error $why) {
        // Report the error.
        header("Content-Type: text/plain");
        http_response_code($why->getStatusCode());
        echo "PDFCrowd Error: {$why}";
    }
}

?>

In-memory PDF to HTML in PHP website

<?php
require 'pdfcrowd.php';

// The recommended method is POST.
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    try {
        // Create an API client instance.
        $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

        // Run the conversion.
        $html = $client->convertRawData(file_get_contents("/path/to/hello_world.pdf"));

        // Set HTTP response headers.
        header("Content-Type: text/html");
        header("Cache-Control: no-cache");
        header("Accept-Ranges: none");
        header("Content-Disposition: attachment; filename*=UTF-8''" . rawurlencode("logo.html"));

        echo $html;
    }
    catch(\Pdfcrowd\Error $why) {
        // Report the error.
        header("Content-Type: text/plain");
        http_response_code($why->getStatusCode());
        echo "PDFCrowd Error: {$why}";
    }
}

?>

Laravel examples

PDF file to HTML in Laravel

<?php

// The recommended method is POST.
Route::post('/', function () {
    try {
        // Create an API client instance.
        $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

        // Run the conversion and store the result in the `html` variable.
        $html = $client->convertFile("/path/to/logo.pdf");

        // Send the result and set HTTP response headers.
        return response($html)
            ->header("Content-Type", "text/html")
            ->header("Cache-Control", "no-cache")
            ->header("Accept-Ranges", "none")
            ->header("Content-Disposition",
                     "attachment; filename*=UTF-8''" . rawurlencode("logo.html"));
    }
    catch(\Pdfcrowd\Error $why) {
        // Send the error in the HTTP response.
        return response($why, $why->getStatusCode())
            ->header("Content-Type", "text/plain");
    }
});

?>

PDF url to HTML in Laravel

<?php

// The recommended method is POST.
Route::post('/', function () {
    try {
        // Create an API client instance.
        $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

        // Run the conversion and store the result in the `html` variable.
        $html = $client->convertUrl("https://pdfcrowd.com/static/pdf/apisamples/invoice.pdf");

        // Send the result and set HTTP response headers.
        return response($html)
            ->header("Content-Type", "text/html")
            ->header("Cache-Control", "no-cache")
            ->header("Accept-Ranges", "none")
            ->header("Content-Disposition",
                     "attachment; filename*=UTF-8''" . rawurlencode("invoice.html"));
    }
    catch(\Pdfcrowd\Error $why) {
        // Send the error in the HTTP response.
        return response($why, $why->getStatusCode())
            ->header("Content-Type", "text/plain");
    }
});

?>

In-memory PDF to HTML in Laravel

<?php

// The recommended method is POST.
Route::post('/', function () {
    try {
        // Create an API client instance.
        $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

        // Run the conversion and store the result in the `html` variable.
        $html = $client->convertRawData(file_get_contents("/path/to/hello_world.pdf"));

        // Send the result and set HTTP response headers.
        return response($html)
            ->header("Content-Type", "text/html")
            ->header("Cache-Control", "no-cache")
            ->header("Accept-Ranges", "none")
            ->header("Content-Disposition",
                     "attachment; filename*=UTF-8''" . rawurlencode("logo.html"));
    }
    catch(\Pdfcrowd\Error $why) {
        // Send the error in the HTTP response.
        return response($why, $why->getStatusCode())
            ->header("Content-Type", "text/plain");
    }
});

?>

Symfony examples

PDF file to HTML in Symfony

<?php
namespace App\Controller;

use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\HttpFoundation\Response;

class DemoController
{
    // The recommended method is POST.
    #[Route('/', methods: ['POST'])]
    public function convert()
    {
        try {
            // Create an API client instance.
            $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

            // Run the conversion and store the result in the `html` variable.
            $html = $client->convertFile("/path/to/logo.pdf");

            // Send the result and set HTTP response headers.
            return new Response(
                $html,
                Response::HTTP_OK,
                ["Content-Type" => "text/html",
                 "Cache-Control" => "no-cache",
                 "Accept-Ranges" => "none",
                 "Content-Disposition" => "attachment; filename*=UTF-8''" . rawurlencode("logo.html")]);
        }
        catch(\Pdfcrowd\Error $why) {
            // Send the error in the HTTP response.
            return new Response($why,
                                $why->getStatusCode(),
                                ["Content-Type" => "text/plain"]);
        }
    }
}

PDF url to HTML in Symfony

<?php
namespace App\Controller;

use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\HttpFoundation\Response;

class DemoController
{
    // The recommended method is POST.
    #[Route('/', methods: ['POST'])]
    public function convert()
    {
        try {
            // Create an API client instance.
            $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

            // Run the conversion and store the result in the `html` variable.
            $html = $client->convertUrl("https://pdfcrowd.com/static/pdf/apisamples/invoice.pdf");

            // Send the result and set HTTP response headers.
            return new Response(
                $html,
                Response::HTTP_OK,
                ["Content-Type" => "text/html",
                 "Cache-Control" => "no-cache",
                 "Accept-Ranges" => "none",
                 "Content-Disposition" => "attachment; filename*=UTF-8''" . rawurlencode("invoice.html")]);
        }
        catch(\Pdfcrowd\Error $why) {
            // Send the error in the HTTP response.
            return new Response($why,
                                $why->getStatusCode(),
                                ["Content-Type" => "text/plain"]);
        }
    }
}

In-memory PDF to HTML in Symfony

<?php
namespace App\Controller;

use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\HttpFoundation\Response;

class DemoController
{
    // The recommended method is POST.
    #[Route('/', methods: ['POST'])]
    public function convert()
    {
        try {
            // Create an API client instance.
            $client = new \Pdfcrowd\PdfToHtmlClient("demo", "demo");

            // Run the conversion and store the result in the `html` variable.
            $html = $client->convertRawData(file_get_contents("/path/to/hello_world.pdf"));

            // Send the result and set HTTP response headers.
            return new Response(
                $html,
                Response::HTTP_OK,
                ["Content-Type" => "text/html",
                 "Cache-Control" => "no-cache",
                 "Accept-Ranges" => "none",
                 "Content-Disposition" => "attachment; filename*=UTF-8''" . rawurlencode("logo.html")]);
        }
        catch(\Pdfcrowd\Error $why) {
            // Send the error in the HTTP response.
            return new Response($why,
                                $why->getStatusCode(),
                                ["Content-Type" => "text/plain"]);
        }
    }
}