How to optimize PDF asynchronously for PDF optimization API in PHP and PDF.co Web API

How to optimize PDF asynchronously in PHP with easy ByteScout code samples to make PDF optimization API. Step-by-step tutorial

Sample source codes below will show you how to cope with a difficult task, for example, PDF optimization API in PHP. PDF.co Web API helps with PDF optimization API in PHP. PDF.co Web API is the Rest API that provides set of data extraction functions, tools for documents manipulation, splitting and merging of pdf files. Includes built-in OCR, images recognition, can generate and read barcodes from images, scans and pdf.

PHP code snippet like this for PDF.co Web API works best when you need to quickly implement PDF optimization API in your PHP application. Sample code in PHP is all you need. Copy-paste it to your the code editor, then add a reference to PDF.co Web API and you are ready to try it! Use of PDF.co Web API in PHP is also explained in the documentation included along with the product.

ByteScout free trial version is available for FREE download from our website. Programming tutorials along with source code samples are included.

Try PDF.co Web API today:  60 Day Free Trial (on-premise) or  Web API (on-demand version)

optimize-pdf-async.php
      
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Cloud API asynchronous "Optimize PDF" job example (allows to avoid timeout errors).</title> </head> <body> <?php // Cloud API asynchronous "Optimize PDF" job example. // Allows to avoid timeout errors when processing huge or scanned PDF documents. // The authentication key (API Key). // Get your own by registering at https://app.pdf.co/documentation/api $apiKey = "***********************************"; // Direct URL of source PDF file. Check another example if you need to upload a local file to the cloud. $sourceFileUrl = "https://bytescout-com.s3.amazonaws.com/files/demo-files/cloud-api/pdf-optimize/sample.pdf"; // PDF document password. Leave empty for unprotected documents. $password = ""; // Prepare URL for `Optimize PDF` API call $url = "https://api.pdf.co/v1/pdf/optimize" . "?password=" . $password . "&url=" . $sourceFileUrl . "&async=true"; // (!) Make asynchronous job // 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); if ($json["error"] == false) { // URL of generated PDF file that will available after the job completion $resultFileUrl = $json["url"]; // Asynchronous job ID $jobId = $json["jobId"]; // Check the job status in a loop do { $status = CheckJobStatus($jobId); // Possible statuses: "working", "failed", "aborted", "success". // Display timestamp and status (for demo purposes) echo "<p>" . date(DATE_RFC2822) . ": " . $status . "</p>"; if ($status == "success") { // Display link to the file with conversion results echo "<div><h2>Conversion Result:</h2><a href='" . $resultFileUrl . "' target='_blank'>" . $resultFileUrl . "</a></div>"; break; } else if ($status == "working") { // Pause for a few seconds sleep(3); } else { echo $status . "<br/>"; break; } } while (true); } 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); function CheckJobStatus($jobId) { $status = null; // Create URL $url = "https://api.pdf.co/v1/job/check?jobid=" . $jobId; // 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); if ($json["error"] == false) { $status = $json["status"]; } 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); return $status; } ?> </body> </html>

Try PDF.co Web API today:  60 Day Free Trial (on-premise) or  Web API (on-demand version)

VIDEO

ON-PREMISE VERSION INFORMATION

Get 60 Day Free Trial or Visit PDF.co Web API Home Page

Explore PDF.co Web API Documentation

Get PDF.co Web API Free Training

WEB API

Get Your Free API Key

Explore Web API Documentation

Related Samples: