andrew72ru / web-to-print
此包用于使用无头Chrome和Chrome驱动从HTML生成PDF页面
v1.0.0
2022-11-20 08:31 UTC
Requires
- php: >=8.0
- ext-ctype: *
- ext-iconv: *
- php-webdriver/webdriver: ^1.13
- psr/log: ^2.0
- symfony/http-client: ^5.4
- symfony/mime: ^5.4
- symfony/process: ^5.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.13
- phpunit/phpunit: ^9.5
- symfony/var-dumper: ^5.4
- vimeo/psalm: ^4.30
README
此包用于使用无头Chrome和Chrome驱动从HTML生成PDF页面。
要求
此包需要PHP >= 8.0,并安装 ctype
和 iconv
扩展。您还必须在工作环境中安装Chrome(chromium)和 cromedriver
可执行文件。
使用方法
首先,创建Chrome Driver runner的实例
$logger = new \Psr\Log\NullLogger(); // Choose your Psr\Log\LoggerInterface implementation $runner = new \Andrew72ru\Web2print\DriverRunner($logger, '/path/to/chromedriver');
之后,您可以调用 PrintToPdf
类
$printer = new \Andrew72ru\Web2print\PrintToPdf($runner, $logger); $result = $printer('https://google.com', asBas64: true); // You can get Base64 or binary string \file_put_contents('google.pdf', \base64_decode($result));
结果,您将在工作目录中有一个 'google.pdf' 文件。
默认选项
PrintToPdf
类有一组默认选项用于运行Chrome和打印命令。
Chrome选项
$defaultArguments = ['--headless', '--run-all-compositor-stages-before-draw'];
打印选项
$defaultParams = [ 'displayHeaderFooter' => false, 'printBackground' => true, 'marginTop' => 0, 'marginBottom' => 0, 'marginLeft' => 0, 'marginRight' => 0, ];
请参阅 Chrome手册 中的参考。
测试
在测试之前,您必须将 chromedriver
可执行文件放入项目根目录。
运行测试
vendor/bin/phpunit