1. Go to this page and download the library: Download poli-page/sdk library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
poli-page / sdk example snippets
use PoliPage\PoliPage;
use PoliPage\ProjectModeInput;
$client = PoliPage::client($_ENV['POLI_PAGE_API_KEY']);
$pdf = $client->render->pdf(new ProjectModeInput(
project: 'getting-started',
template: 'welcome',
version: '1.0.0',
data: ['name' => 'World'],
));
// $pdf is a string of raw PDF bytes
use PoliPage\RenderMetadata;
use PoliPage\ThumbnailOptions;
// 1. Render and store
$doc = $client->render->document(new ProjectModeInput(
project: 'billing',
template: 'invoice',
version: '1.0.0',
data: ['invoiceNumber' => 'INV-001'],
metadata: new RenderMetadata(['customerId' => 'cust_123']), // your own audit data
));
// $doc->documentId, $doc->pageCount, $doc->sizeBytes, $doc->presignedPdfUrl, $doc->metadata, ...
// 2. Save $doc->documentId in your database
$db->invoices->update(['id' => 'INV-001'], ['documentId' => $doc->documentId]);
// 3. Later, fetch a fresh presigned URL + download
$fresh = $client->documents->get($doc->documentId);
$pdf = $fresh->downloadPdf();
// 4. Generate thumbnails (Starter+ tier)
$thumbs = $client->documents->thumbnails(
$doc->documentId,
new ThumbnailOptions(width: 320, format: 'png'),
);
// 5. When done, soft-delete
$client->documents->delete($doc->documentId);
// Static factory — uses every default.
$client = PoliPage::client($_ENV['POLI_PAGE_API_KEY']);
// Named-arg constructor — override what you need.
$client = new PoliPage(
apiKey: $_ENV['POLI_PAGE_API_KEY'],
baseUrl: 'https://api-develop.poli.page',
maxRetries: 3,
timeout: 60.0,
logger: $monolog,
);
use PoliPage\PoliPage;
use PoliPage\PoliPageException;
use PoliPage\Exception\AuthenticationException;
use PoliPage\Exception\BadRequestException;
use PoliPage\Exception\ConnectionException;
use PoliPage\Exception\RateLimitException;
try {
$pdf = $client->render->pdf(new ProjectModeInput(...));
} catch (AuthenticationException $e) {
return refreshCredentials(); // 401 / 403
} catch (RateLimitException $e) {
return queueForLater(); // 429 after retries exhausted
} catch (BadRequestException $e) {
error_log("bad input: {$e->errorCode} {$e->getMessage()}"); // 400
} catch (ConnectionException $e) {
error_log("network / timeout: {$e->getMessage()}");
} catch (PoliPageException $e) {
// catch-all for any SDK-raised exception
error_log("poli error: {$e->errorCode} status={$e->status} requestId={$e->requestId}");
throw $e;
}
if ($e->isAuthError()) { /* 401 or 403 */ }
if ($e->isRateLimitError()) { /* 429 */ }
if ($e->isValidationError()) { /* 400 */ }
if ($e->isNetworkError()) { /* transport-level */ }
if ($e->isRetryable()) { /* 5xx, 429, network — SDK already retried */ }
try {
$doc = $client->render->document(new ProjectModeInput(...));
} catch (PoliPageException $e) {
if ($e->errorCode === PoliPageException::PAYMENT_REQUIRED) {
return showBanner('Subscription has unpaid invoices.');
}
if ($e->errorCode === PoliPageException::ORGANIZATION_CANCELLED) {
return showBanner('Subscription cancelled — service is read-only.');
}
if ($e->errorCode === PoliPageException::DOCUMENT_NOT_FOUND) {
return show404();
}
if ($e->errorCode === PoliPageException::GONE) {
return show410(); // document was soft-deleted
}
throw $e;
}
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$logger = new Logger('polipage');
$logger->pushHandler(new StreamHandler('php://stderr', Logger::DEBUG));
$client = new PoliPage(
apiKey: $_ENV['POLI_PAGE_API_KEY'],
logger: $logger, // any PSR-3 LoggerInterface
);
use PoliPage\Events\RetryEvent;
use PoliPage\PoliPageException;
$client = new PoliPage(
apiKey: $_ENV['POLI_PAGE_API_KEY'],
onRetry: fn(RetryEvent $e) => $log->warn(
"retry {$e->attempt} after {$e->delayMs}ms: {$e->reason->errorCode}",
),
onError: fn(PoliPageException $e) => $sentry->capture($e),
);
bash
composer install
php examples/demo.php
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.