BCL easyPDF SDK
easyPDF SDK Usermanual
PDF Creator Programming API  |  Download Free Trial  |  Contact Us to Purchase

Native PHP PDFProcessor API

Using PDFProcessor

The native PHP API, which is written in PHP 5, is a thin interface around a binary executable. It is very similar to the native .NET API, with the exception of some language-specific differences.

In order to use easyPDF, just import the library by adding require("easyPDFProcessor.php");. The PDFProcessor SDK is inside the BCL\easyPDF\PDFProcessor\ namespace. easyPDFProcessor.php can be found under C:\Program Files\Common Files\BCL Technologies\easyPDF 8.

When an error occurs, an exception of type PDFProcessorException is thrown.

If the customer's application crashes, the system automatically closes all pipes belonging to the process, which means all related worker processes automatically quit as well.

The minimal PHP sample code looks like this:

<?php
require("easyPDFProcessor.php");
$processor = new BCL\easyPDF\PDFProcessor\PDFProcessor();
try
{
   echo $processor->GetPageCount("c:\\test\\input.pdf", ""), "\n";
}
catch(BCL\easyPDF\PDFProcessor\PDFProcessorException $ex)
{
   echo $ex->getMessage(), "\n";
}
?>

PDFProcessor's constructor is designed to never throw exceptions. That's because it does not launch a worker process and does not create a named pipe, it merely initializes a few variables to their default values. In other words, creating a PDFProcessor object is extremely lightweight, like creating a Color object.

However, as soon as you do anything else, it instantly launches a worker process.

Using PDFProcessorHandle

The PDFProcessorHandle class has a destructor, which means it is automatically disposed when the object goes out of scope. That makes memory management trivial, just make sure you are not holding on to the variable when you are no longer using the SDK.

It is not possible to create a PDFProcessorHandle object directly. Instead, handle instances are created using PDFProcessor's OpenFile or OpenMem method.

The minimal PHP sample code looks like this:

require("easyPDFProcessor.php");
$processor = new BCL\easyPDF\PDFProcessor\PDFProcessor();
$handle = null;
try
{
   $handle = $processor->OpenFile("c:\\test\\input.pdf", "c:\\test\\output.pdf", "");
   echo $handle->GetPageCount(), "\n";
   $handle->GetPageSize(0, $width, $height);
   echo "Page 1's size: ", $width, "x", $height, " pt\n";
}
catch(BCL\easyPDF\PDFProcessor\PDFProcessorException $ex)
{
   echo $ex->getMessage(), "\n";
}
finally
{
   if($handle)
   {
      $handle->Close();
      $handle = null;
   }
}

Launch Timeout

Launching the worker process and connecting the named pipe should happen very fast, in milliseconds. However, under an abnormally heavy load, the computer may not have enough cycles to perform this task in a timely fashion.

The native PHP API has an internal timeout built-in. The default value is 1 minute. This is because a server may momentarily slow down so much that it is not responding for seconds, but it usually recovers after a while.

The default timeout value can be changed via the launchTimeout member (in milliseconds). This must be performed immediately after the creation of the PDFProcessor object.

$processor = new BCL\easyPDF\PDFProcessor\PDFProcessor();
try
{
   $processor->launchTimeout = 60000;
   $numberOfPages = $processor->GetPageCount("c:\\test\\input.pdf", "")
}
catch(BCL\easyPDF\PDFProcessor\PDFProcessorException $ex)
{
   echo $ex->getMessage(), "\n";
}

Upon timeout an exception is thrown, and the SDK cannot be used. Another attempt may be made later.