org_heigl / ghostscript
A PHP-Wrapper around the Ghostscript-CLI
Installs: 1 631 330
Dependents: 4
Suggesters: 0
Security: 0
Stars: 38
Watchers: 7
Forks: 13
Open Issues: 1
Requires
- php: ^7.4||^8.0
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-12-01 00:10:15 UTC
README
A PHP-wrapper to the Ghostscript-CLI
The main reason to create this library was to create images from PDF- or Postscript-files. As those Files can be either in RGB- or in CMYK-Colorspace the library tries to handle colors so that the original file and the image are close in color-impression. This is especially important as f.e. PNG is RGB-only while JPEG can be either in RGB or CMYK.
Multipaged PDF-Files will create multiple images! To not overwrite your image-files the filename will be passed to sprintf to create a filename containing the number of the page. The one and only parameter will be the number of the page.
Why another Ghostscript-Wrapper?
There are currently 2 other wrappers around that both didn't meet the requirements I had:
While the gravitymedia library concentrates more on creating PDFs from input-media the alchemy library is not easily extendable and doesn't handle the parameters to finetune Ghostscript the way I needed them.
So this library tries to handle most of the important switches to ghostscript and
also allows you to extend the library by implementing your own driver using the
DriverInterface
. More information on that will be shown in the
Documentation
Installation
This package is best installed using composer.
composer require org_heigl/ghostscript
Documentation
You can find the documentation for the library at https://heiglandreas.github.io/Org_Heigl_Ghostscript
Usage
<?php
use Org_Heigl\Ghostscript\Ghostscript;
// Create the Ghostscript-Wrapper
$gs = new Ghostscript ();
// Set the output-device
$gs->setDevice('jpeg')
// Set the input file
->setInputFile('path/to/my/ps/or/pdf/file')
// Set the output file that will be created in the same directory as the input
->setOutputFile('output')
// Set the resolution to 96 pixel per inch
->setResolution(96)
// Set Text-antialiasing to the highest level
->setTextAntiAliasing(Ghostscript::ANTIALIASING_HIGH);
// Set the jpeg-quality to 100 (This is device-dependent!)
->getDevice()->setQuality(100);
// convert the input file to an image
if (true === $gs->render()) {
echo 'success';
} else {
echo 'some error occured';
}