ttbooking / phpgs
PHP Wrapper for Ghost Script
2.0.2
2024-03-13 08:48 UTC
Requires
- php: ^8.0
- symfony/process: ^6.0 || ^7.0
Requires (Dev)
- ext-imagick: *
- mockery/mockery: ^1.5
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-13 09:51:20 UTC
README
本包提供 GhostScript 的 PHP Wrapper。它还提供了一个简单的工具用于 PDF 页面的拆分/合并。
安装
composer require ttbooking/phpgs
用法
执行器
对于通用用途,将 执行器 作为 Ghost Script 的通用包装器
use Webit\PHPgs\ExecutorBuilder; use Webit\PHPgs\Input; use Webit\PHPgs\Output; use Webit\PHPgs\Options\Options; use Webit\PHPgs\Options\Device; /** @var \Webit\PHPgs\Executor $executor */ $executor = ExecutorBuilder::create()->setGhostScriptBinary('/path/to/the/binary/of/gs')->build(); $input = Input::singleFile('/path/to/your/input_file'); $output = Output::create('/path/to/your/tempdir/output.pdf'); // Please note Options class is immutable (every change creates a new instance) $options = Options::create(Device::pdfWrite()) // set predefined options (see Options class for all predefined options) ->withNoTransparency() ->useCropBox() ->useCIEColor() // change any option you need ->withOption('-dWhatever', 'value of whatever'); $executor->execute($input, $output, $options);
PDF操作器
PDF操作器 提供了简化的 PDF 拆分/合并接口
合并
use Webit\PHPgs\Pdf\PdfManipulator; $pdfManipulator = new PdfManipulator($executor); $input = Input::multipleFiles( array( 'one.pdf', 'two.pdf', 'three.pdf' ) ); $output = Output::create('/temp-dir/random-5322/output.pdf'); $customOptions = Options::create(); // optional $pdfManipulator->merge($input, $output, $customOptions);
拆分页面
use Webit\PHPgs\Pdf\PdfManipulator; $pdfManipulator = new PdfManipulator($executor); $input = Input::singleFile('multipage.pdf'); // multi page output $output = Output::create('/temp-dir/random-12322/output-%d.pdf'); // single page output // $output = Output::create('/temp-dir/random-12322/output.pdf'); $customOptions = Options::create(); // optional // splitting pages from 5 to 10 $pdfManipulator->split($input, $output, 5, 10, $customOptions); // produces output-5.pdf, output-6.pdf, ... // splitting pages from 5 to the last page $pdfManipulator->split($input, $output, 5, null, $customOptions); // produces output-5.pdf, output-6.pdf, ... // splitting pages from 1 to 10 $pdfManipulator->split($input, $output, null, 10, $customOptions); // produces output-1.pdf, output-2.pdf, ..., output-10.pdf
注意:为了保证多页面拆分能够正确工作,输出必须始终引用一个 空 目录。
测试
docker-compose run --rm php5 ./vendor/bin/phpunit