How to convert PDF to image from uploaded file for PDF to image API in PHP with PDF.co Web API

How to convert PDF to image from an uploaded file in PHP with easy ByteScout code samples. Step-by-step tutorial for PDF to image.

Today we will explain the steps and algorithm of how to convert PDF to image from uploaded file and how to make it work in your application. PDF.co Web API helps with PDF to image API in PHP. PDF.co Web API is the Web API with a set of tools for document manipulation, data conversion, data extraction, splitting, and merging of documents. Includes image recognition, built-in OCR, barcode generation, and barcode decoders to decode bar codes from scans, pictures, and pdf.

PHP code samples for PHP developers help to speed up the application’s code writing when using PDF.co Web API. This PHP sample code should be copied and pasted into your project. After doing this just compile your project and click Run. Further enhancement of the code will make it more vigorous. Please refer to PDF.co Github repository to get this code snippet in PHP as well as other languages.

Our website provides a free trial version of PDF.co Web API that includes source code samples to help with your PHP project.

On-demand (REST Web API) version:
 Web API (on-demand version)

On-premise offline SDK for Windows:
 60 Day Free Trial (on-premise)

We’ll review the Source code and its output first, then we’ll analyze it.

Source Code:

pdf-to-image.php

      
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PDF To Image Results</title> </head> <body> <?php // Get submitted form data $apiKey = $_POST["apiKey"]; // The authentication key (API Key). Get your own by registering at https://app.pdf.co/documentation/api $outputFormat = $_POST["outputFormat"]; $pages = $_POST["pages"]; // 1. RETRIEVE THE PRESIGNED URL TO UPLOAD THE FILE. // * If you already have a direct PDF file link, go to the step 3. // Create URL $url = "https://api.pdf.co/v1/file/upload/get-presigned-url" . "?name=" . $_FILES["file"]["name"] . "&contenttype=application/octet-stream"; // Create request $curl = curl_init(); curl_setopt($curl, CURLOPT_HTTPHEADER, array("x-api-key: " . $apiKey)); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // Execute request $result = curl_exec($curl); if (curl_errno($curl) == 0) { $status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($status_code == 200) { $json = json_decode($result, true); // Get URL to use for the file upload $uploadFileUrl = $json["presignedUrl"]; // Get URL of uploaded file to use with later API calls $accessFileUrl = $json["url"]; // 2. UPLOAD THE FILE TO CLOUD. $localFile = $_FILES["file"]["tmp_name"]; $fileHandle = fopen($localFile, "r"); curl_setopt($curl, CURLOPT_URL, $uploadFileUrl); curl_setopt($curl, CURLOPT_HTTPHEADER, array("content-type: application/octet-stream")); curl_setopt($curl, CURLOPT_PUT, true); curl_setopt($curl, CURLOPT_INFILE, $fileHandle); curl_setopt($curl, CURLOPT_INFILESIZE, filesize($localFile)); // Execute request curl_exec($curl); fclose($fileHandle); if (curl_errno($curl)) { // Display request error echo "Error: " . curl_error($curl); } else { $status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($status_code == 200) { // 3. CONVERT PDF TO IMAGE RenderPDF($apiKey, $accessFileUrl, $outputFormat, $pages); } else { // Display service reported error echo "<p>Status code: " . $status_code . "</p>"; echo "<p>" . $result . "</p>"; } } } else { // Display service reported error echo "<p>Status code: " . $status_code . "</p>"; echo "<p>" . $result . "</p>"; } curl_close($curl); } else { // Display CURL error echo "Error: " . curl_error($curl); } function RenderPDF($apiKey, $fileUrl, $outputFormat, $pages) { $formats = array(0 => "png", 1 => "jpg", 2 => "tiff"); $format = $formats[$outputFormat]; // Create URL $url = "https://api.pdf.co/v1/pdf/convert/to/" . $format; // Prepare requests params $parameters = array(); $parameters["url"] = $fileUrl; $parameters["pages"] = $pages; // Create Json payload $data = json_encode($parameters); // Create request $curl = curl_init(); curl_setopt($curl, CURLOPT_HTTPHEADER, array("x-api-key: " . $apiKey, "Content-type: application/json")); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Execute request $result = curl_exec($curl); if (curl_errno($curl) == 0) { $status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($status_code == 200) { $json = json_decode($result, true); if ($json["error"] == false) { if ($format == "tiff") { // The TIFF format is multi-page, so the result is always the single file $resultFileUrl = $json["url"]; echo "<p><a href=" . $resultFileUrl . ">" . $resultFileUrl . "</p>"; } else { // JPEG and PNG formats are single-page, so the results are multiple $resultFiles = $json["urls"]; foreach ($resultFiles as &$resultFileUrl) echo "<p><a href=" . $resultFileUrl . ">" . $resultFileUrl . "</p>"; } } else { // Display service reported error echo "<p>Error: " . $json["message"] . "</p>"; } } else { // Display request error echo "<p>Status code: " . $status_code . "</p>"; echo "<p>" . $result . "</p>"; } } else { // Display CURL error echo "Error: " . curl_error($curl); } // Cleanup curl_close($curl); } ?> </body> </html>

Output:

Now that we’ve already reviewed the source code and its output, let’s analyze the code and try to understand it.

In this program, initially we’re preparing all data for API call such as API Key ($apiKey), Output Format ($outputFormat), No of pages to be converted ($pages), etc.

PDF.co API call for converting ‘PDF to Image’ prefers input PDF URL, hence we’re converting uploaded document to PDF.co cloud. Please note: These uploaded files are only available temporary and will be deleted after few minutes. To Upload PDF file, we’re first getting Pre-signed URL for source file using PDF.co API /v1/file/get-presigned-url. This API call returns URLs for uploading actual file ($json[“presignedUrl”]) and public URL ($json[“url”]). Once actual file is uploaded to returned pre-signed URL, public URL will point to this uploaded file.

Method RenderPDF contains all logic for converting PDF to Image. This method requires input parameters such as PDF.co API Key ($apiKey), Input File URL ($fileUrl), Output Image Format ($outputFormat) and Pages to be converted ($pages). PDF.co API key is required by PDF.co to authenticate all requests. PDF to Image supports various image output formats such as PNG, JPG or TIFF. Pages parameter expects no of pages to be converted to image. This pages can be passed in terms of comma separated page numbers and page numbers are zero index based. We can further customize page numbers as per our requirements.

PDF.co API endpoint /v1/pdf/convert/to/ is used here. Here, $format variable is replaced with type of image we want to generate. Output contains URLs for generated image. If we’re using image format such as JPG or PNG then output will contain array list URLs, with each URL representing image for individual page. For TIFF image format as we know it can contain multiple pages, hence output will only have single URL.

PDF.co API endpoint also contains parameters for advanced scenarios. For example if we only want certain area of PDF page to be converted to image, then we can use rect parameter and pass coordinates there. For more information about other available parameters, please refer to PDF.co API documentations here.

Thank you for reading this article! To get more out of it please try to implement this program in your machine.

VIDEO

ON-PREMISE OFFLINE SDK

Get 60 Day Free Trial

See also:

ON-DEMAND REST WEB API

Get Your API Key

See also:

Related Samples: