Image to PDF PHP Examples
These examples demonstrate common Image to PDF API workflows in PHP.
Basic examples
PNG file to PDF file
<?php require "pdfcrowd.php"; try { // Create an API client instance. $client = new \Pdfcrowd\ImageToPdfClient("demo", "demo"); // Run the conversion and save the result to a file. $client->convertFileToFile("/path/to/logo.png", "logo.pdf"); } catch(\Pdfcrowd\Error $why) { error_log("PDFCrowd Error: {$why}"); throw $why; } ?>
PNG file to in-memory PDF
<?php require "pdfcrowd.php"; try { // Create an API client instance. $client = new \Pdfcrowd\ImageToPdfClient("demo", "demo"); // Run the conversion and store the result in the `pdf` variable. $pdf = $client->convertFile("/path/to/logo.png"); // 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) { error_log("PDFCrowd Error: {$why}"); throw $why; } ?>
PNG file to PDF stream
<?php require "pdfcrowd.php"; try { // Create an API client instance. $client = new \Pdfcrowd\ImageToPdfClient("demo", "demo"); // Create an output stream for the conversion result $output_stream = fopen("logo.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 to the output stream. $client->convertFileToStream("/path/to/logo.png", $output_stream); // Close the output stream. fclose($output_stream); } catch(\Pdfcrowd\Error $why) { error_log("PDFCrowd Error: {$why}"); throw $why; } ?>
PNG url to PDF file
<?php require "pdfcrowd.php"; try { // Create an API client instance. $client = new \Pdfcrowd\ImageToPdfClient("demo", "demo"); // Run the conversion and save the result to a file. $client->convertUrlToFile("https://pdfcrowd.com/static/images/logo.png", "logo.pdf"); } catch(\Pdfcrowd\Error $why) { error_log("PDFCrowd Error: {$why}"); throw $why; } ?>
PNG url to in-memory PDF
<?php require "pdfcrowd.php"; try { // Create an API client instance. $client = new \Pdfcrowd\ImageToPdfClient("demo", "demo"); // Run the conversion and store the result in the `pdf` variable. $pdf = $client->convertUrl("https://pdfcrowd.com/static/images/logo.png"); // 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) { error_log("PDFCrowd Error: {$why}"); throw $why; } ?>
PNG url to PDF stream
<?php require "pdfcrowd.php"; try { // Create an API client instance. $client = new \Pdfcrowd\ImageToPdfClient("demo", "demo"); // Create an output stream for the conversion result $output_stream = fopen("logo.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 to the output stream. $client->convertUrlToStream("https://pdfcrowd.com/static/images/logo.png", $output_stream); // Close the output stream. fclose($output_stream); } catch(\Pdfcrowd\Error $why) { error_log("PDFCrowd Error: {$why}"); throw $why; } ?>
In-memory PNG to PDF file
<?php require "pdfcrowd.php"; try { // Create an API client instance. $client = new \Pdfcrowd\ImageToPdfClient("demo", "demo"); // Run the conversion and save the result to a file. $client->convertRawDataToFile(file_get_contents("/path/to/logo.png"), "logo.pdf"); } catch(\Pdfcrowd\Error $why) { error_log("PDFCrowd Error: {$why}"); throw $why; } ?>
In-memory PNG to in-memory PDF
<?php require "pdfcrowd.php"; try { // Create an API client instance. $client = new \Pdfcrowd\ImageToPdfClient("demo", "demo"); // Run the conversion and store the result in the `pdf` variable. $pdf = $client->convertRawData(file_get_contents("/path/to/logo.png")); // 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) { error_log("PDFCrowd Error: {$why}"); throw $why; } ?>
In-memory PNG to PDF stream
<?php require "pdfcrowd.php"; try { // Create an API client instance. $client = new \Pdfcrowd\ImageToPdfClient("demo", "demo"); // Create an output stream for the conversion result $output_stream = fopen("logo.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 to the output stream. $client->convertRawDataToStream(file_get_contents("/path/to/logo.png"), $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\ImageToPdfClient("demo", "demo"); // Configure the conversion. $client->setDebugLog(true); // Run the conversion and save the result to a file. $client->convertFileToFile("/path/to/logo.png", "logo.pdf"); // 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 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
PNG file to PDF 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\ImageToPdfClient("demo", "demo"); // Run the conversion. $pdf = $client->convertFile("/path/to/logo.png"); // Set HTTP response headers. header("Content-Type: application/pdf"); header("Cache-Control: no-cache"); header("Accept-Ranges: none"); header("Content-Disposition: attachment; filename*=UTF-8''" . rawurlencode("logo.pdf")); echo $pdf; } catch(\Pdfcrowd\Error $why) { // Report the error. header("Content-Type: text/plain"); http_response_code($why->getStatusCode()); echo "PDFCrowd Error: {$why}"; } } ?>
PNG url to PDF 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\ImageToPdfClient("demo", "demo"); // Run the conversion. $pdf = $client->convertUrl("https://pdfcrowd.com/static/images/logo.png"); // Set HTTP response headers. header("Content-Type: application/pdf"); header("Cache-Control: no-cache"); header("Accept-Ranges: none"); header("Content-Disposition: attachment; filename*=UTF-8''" . rawurlencode("logo.pdf")); echo $pdf; } catch(\Pdfcrowd\Error $why) { // Report the error. header("Content-Type: text/plain"); http_response_code($why->getStatusCode()); echo "PDFCrowd Error: {$why}"; } } ?>
In-memory PNG to PDF 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\ImageToPdfClient("demo", "demo"); // Run the conversion. $pdf = $client->convertRawData(file_get_contents("/path/to/logo.png")); // Set HTTP response headers. header("Content-Type: application/pdf"); header("Cache-Control: no-cache"); header("Accept-Ranges: none"); header("Content-Disposition: attachment; filename*=UTF-8''" . rawurlencode("logo.pdf")); echo $pdf; } catch(\Pdfcrowd\Error $why) { // Report the error. header("Content-Type: text/plain"); http_response_code($why->getStatusCode()); echo "PDFCrowd Error: {$why}"; } } ?>
Laravel examples
PNG file to PDF in Laravel
<?php // The recommended method is POST. Route::post('/', function () { try { // Create an API client instance. $client = new \Pdfcrowd\ImageToPdfClient("demo", "demo"); // Run the conversion and store the result in the `pdf` variable. $pdf = $client->convertFile("/path/to/logo.png"); // Send the result and set HTTP response headers. return response($pdf) ->header("Content-Type", "application/pdf") ->header("Cache-Control", "no-cache") ->header("Accept-Ranges", "none") ->header("Content-Disposition", "attachment; filename*=UTF-8''" . rawurlencode("logo.pdf")); } catch(\Pdfcrowd\Error $why) { // Send the error in the HTTP response. return response($why, $why->getStatusCode()) ->header("Content-Type", "text/plain"); } }); ?>
PNG url to PDF in Laravel
<?php // The recommended method is POST. Route::post('/', function () { try { // Create an API client instance. $client = new \Pdfcrowd\ImageToPdfClient("demo", "demo"); // Run the conversion and store the result in the `pdf` variable. $pdf = $client->convertUrl("https://pdfcrowd.com/static/images/logo.png"); // Send the result and set HTTP response headers. return response($pdf) ->header("Content-Type", "application/pdf") ->header("Cache-Control", "no-cache") ->header("Accept-Ranges", "none") ->header("Content-Disposition", "attachment; filename*=UTF-8''" . rawurlencode("logo.pdf")); } catch(\Pdfcrowd\Error $why) { // Send the error in the HTTP response. return response($why, $why->getStatusCode()) ->header("Content-Type", "text/plain"); } }); ?>
In-memory PNG to PDF in Laravel
<?php // The recommended method is POST. Route::post('/', function () { try { // Create an API client instance. $client = new \Pdfcrowd\ImageToPdfClient("demo", "demo"); // Run the conversion and store the result in the `pdf` variable. $pdf = $client->convertRawData(file_get_contents("/path/to/logo.png")); // Send the result and set HTTP response headers. return response($pdf) ->header("Content-Type", "application/pdf") ->header("Cache-Control", "no-cache") ->header("Accept-Ranges", "none") ->header("Content-Disposition", "attachment; filename*=UTF-8''" . rawurlencode("logo.pdf")); } catch(\Pdfcrowd\Error $why) { // Send the error in the HTTP response. return response($why, $why->getStatusCode()) ->header("Content-Type", "text/plain"); } }); ?>
Symfony examples
PNG file to PDF 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\ImageToPdfClient("demo", "demo"); // Run the conversion and store the result in the `pdf` variable. $pdf = $client->convertFile("/path/to/logo.png"); // Send the result and set HTTP response headers. return new Response( $pdf, Response::HTTP_OK, ["Content-Type" => "application/pdf", "Cache-Control" => "no-cache", "Accept-Ranges" => "none", "Content-Disposition" => "attachment; filename*=UTF-8''" . rawurlencode("logo.pdf")]); } catch(\Pdfcrowd\Error $why) { // Send the error in the HTTP response. return new Response($why, $why->getStatusCode(), ["Content-Type" => "text/plain"]); } } }
PNG url to PDF 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\ImageToPdfClient("demo", "demo"); // Run the conversion and store the result in the `pdf` variable. $pdf = $client->convertUrl("https://pdfcrowd.com/static/images/logo.png"); // Send the result and set HTTP response headers. return new Response( $pdf, Response::HTTP_OK, ["Content-Type" => "application/pdf", "Cache-Control" => "no-cache", "Accept-Ranges" => "none", "Content-Disposition" => "attachment; filename*=UTF-8''" . rawurlencode("logo.pdf")]); } catch(\Pdfcrowd\Error $why) { // Send the error in the HTTP response. return new Response($why, $why->getStatusCode(), ["Content-Type" => "text/plain"]); } } }
In-memory PNG to PDF 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\ImageToPdfClient("demo", "demo"); // Run the conversion and store the result in the `pdf` variable. $pdf = $client->convertRawData(file_get_contents("/path/to/logo.png")); // Send the result and set HTTP response headers. return new Response( $pdf, Response::HTTP_OK, ["Content-Type" => "application/pdf", "Cache-Control" => "no-cache", "Accept-Ranges" => "none", "Content-Disposition" => "attachment; filename*=UTF-8''" . rawurlencode("logo.pdf")]); } catch(\Pdfcrowd\Error $why) { // Send the error in the HTTP response. return new Response($why, $why->getStatusCode(), ["Content-Type" => "text/plain"]); } } }