generatepdfs / php-sdk
PHP SDK for GeneratePDFs.com API
Installs: 6
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/generatepdfs/php-sdk
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- mockery/mockery: ^1.6
- pestphp/pest: ^2.0
- phpstan/phpstan: ^1.10
- squizlabs/php_codesniffer: ^3.7
README
PHP SDK for the GeneratePDFs.com API, your go-to place for HTML to PDF.
Upload your HTML files, along with any CSS files and images to generate a PDF. Alternatively provide a URL to generate a PDF from it's contents.
Installation
composer require generatepdfs/php-sdk
Get your API Token
Sign up for an account on GeneratePDFs.com and head to the API Tokens section and create a new token.
Usage
Basic Setup
use GeneratePDFs\GeneratePDFs; $client = GeneratePDFs::connect('YOUR_API_TOKEN');
Generate PDF from HTML File
use GeneratePDFs\GeneratePDFs; use GeneratePDFs\Pdf; // Simple HTML file $pdf = $client->generateFromHtml('/path/to/file.html'); // HTML file with CSS $pdf = $client->generateFromHtml( '/path/to/file.html', '/path/to/file.css' ); // HTML file with CSS and images $pdf = $client->generateFromHtml( '/path/to/file.html', '/path/to/file.css', [ [ 'name' => 'logo.png', 'path' => '/path/to/logo.png', 'mime_type' => 'image/png' // Optional, will be auto-detected ], [ 'name' => 'photo.jpg', 'path' => '/path/to/photo.jpg' ] ] );
Generate PDF from URL
$pdf = $client->generateFromUrl('https://example.com');
Get PDF by ID
// Retrieve a PDF by its ID $pdf = $client->getPdf(123);
Working with PDF Objects
The SDK returns Pdf objects that provide easy access to PDF information and downloading:
// Access PDF properties $pdfId = $pdf->getId(); $pdfName = $pdf->getName(); $status = $pdf->getStatus(); $downloadUrl = $pdf->getDownloadUrl(); $createdAt = $pdf->getCreatedAt(); // Check if PDF is ready if ($pdf->isReady()) { // Download PDF content as string $pdfContent = $pdf->download(); // Or save directly to file $pdf->downloadToFile('/path/to/save/output.pdf'); } // Refresh PDF data from the API (useful for checking status updates) $refreshedPdf = $pdf->refresh(); if ($refreshedPdf->isReady()) { $pdfContent = $refreshedPdf->download(); }
Client Methods
generateFromHtml(string $htmlPath, ?string $cssPath = null, array $images = []): Pdf- Generate a PDF from HTML file(s)generateFromUrl(string $url): Pdf- Generate a PDF from a URLgetPdf(int $id): Pdf- Retrieve a PDF by its IDdownloadPdf(string $downloadUrl): string- Download PDF binary content from a download URL
PDF Object Methods
getId(): int- Get the PDF IDgetName(): string- Get the PDF filenamegetStatus(): string- Get the current status (pending, processing, completed, failed)getDownloadUrl(): string- Get the download URLgetCreatedAt(): DateTimeImmutable- Get the creation dateisReady(): bool- Check if the PDF is ready for downloaddownload(): string- Download and return PDF binary contentdownloadToFile(string $filePath): bool- Download and save PDF to a filerefresh(): Pdf- Refresh PDF data from the API and return a new Pdf instance with updated information
Requirements
- PHP 8.1 or higher
- Guzzle HTTP Client 7.0 or higher
Testing
To run the test suite and code style checker, execute:
composer test
This will run both PHP CodeSniffer (PSR-2 standard) and Pest tests.
Contributing
Contributions and suggestions are welcome and will be fully credited.
We accept contributions via Pull Requests on GitHub.
Pull Requests
- PSR-12 Extended Coding Standard - The easiest way to apply the conventions is to install PHP Code Sniffer.
- Add tests! - Your patch won't be accepted if it doesn't have tests.
- Document any change in behaviour - Make sure the README / CHANGELOG and any other relevant documentation are kept up-to-date.
- Consider our release cycle - We try to follow semver. Randomly breaking public APIs is not an option.
- Create topic branches - Don't ask us to pull from your master branch.
- One pull request per feature - If you want to do more than one thing, send multiple pull requests.
- Send coherent history - Make sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please squash them before submitting.
Changelog
See CHANGELOG.md for a history of changes.
License
This project is licensed under the MIT License. See the LICENSE file for details.