- Add jedarden/pdftract Composer package (sdk/php/) - Implement Client.php with proc_open subprocess execution - Add PSR-3 LoggerInterface integration (defaults to NullLogger) - Add 9 contract methods: extract, extractText, extractMarkdown, extractStream, search, getMetadata, hash, classify, verifyReceipt - Add readonly model classes: Document, Page, Metadata, Fingerprint, Classification, Match, Receipt - Add exception classes: PdftractException base + 8 subclasses - Add PHPUnit conformance test suite - Add phpunit.xml configuration - Add composer.json with jedarden/pdftract package name - Add .ci/argo-workflows/pdftract-php-publish.yaml (Packagist auto-discovery from git tags) Also includes Ruby SDK scaffold from parallel workflow. Closes pdftract-2m3gl
36 lines
783 B
PHP
36 lines
783 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Jedarden\Pdftract;
|
|
|
|
/**
|
|
* Exception thrown when pdftract command fails
|
|
*/
|
|
class PdftractException extends \Exception
|
|
{
|
|
private int $exitCode;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param string $message Error message
|
|
* @param int $exitCode Process exit code
|
|
* @param \Throwable|null $previous Previous exception
|
|
*/
|
|
public function __construct(string $message = "", int $exitCode = 0, ?\Throwable $previous = null)
|
|
{
|
|
parent::__construct($message, $exitCode, $previous);
|
|
$this->exitCode = $exitCode;
|
|
}
|
|
|
|
/**
|
|
* Get the exit code from the failed process
|
|
*
|
|
* @return int Exit code
|
|
*/
|
|
public function getExitCode(): int
|
|
{
|
|
return $this->exitCode;
|
|
}
|
|
}
|