How to Convert PDF to Image from the Uploaded File for PDF to Image API in PHP and PDF.co Web API

PDF.co Web API is the flexible Web API that includes a full set of functions from e-signature requests to data extraction, OCR, images recognition, PDF splitting and PDF merging. It can also generate barcodes and read barcodes from images, scans and PDF.

Step-by-Step Tutorial for PDF to Imagefrom the Uploaded File in PHP

Today we will explain the steps and algorithm of how to convert PDF to image from an 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.

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 documentation to get this code snippet in PHP as well as other languages.

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 // Note: If you have input files large than 200kb we highly recommend to check "async" mode example. // 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

PDFco_PDFtoImage

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 calls such as API Key ($apiKey), Output Format ($outputFormat), and No of pages to be converted ($pages), etc.

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

Method RenderPDF contains all logic for converting PDF to Image. This method requires the input parameters such as PDF.co API Key ($apiKey), the Input File URL ($fileUrl), the 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. The pages parameter expects the number of pages to be converted to image. These pages can be passed in terms of the comma-separated page numbers and page numbers are zero index-based. We can further customize the page numbers as per our requirements.

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

The PDF.co API endpoint also contains parameters for advanced scenarios. For example, if we only want a certain area of the PDF page to be converted to an image, then we can use rect parameter and pass coordinates there. For more information about other available parameters, please refer to the PDF.co API documentation 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: