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"]); } } }