spacetab-io / wkhtmltopdf
基于AMP构建的非阻塞PHP包装器,用于wkhtmltopdf
1.0.3
2020-06-14 15:14 UTC
Requires
- php: >=7.4
- amphp/byte-stream: ^1.7
- amphp/file: ^1.0
- amphp/process: ^1.1
- league/uri: ^6.2
- psr/log: ^1.1
Requires (Dev)
- amphp/phpunit-util: ^1.3
- phpstan/phpstan: ^0.12.5
- phpunit/phpunit: ^9
- symfony/var-dumper: ^5.0
This package is auto-updated.
Last update: 2024-09-09 03:17:28 UTC
README
使用AMP构建的非阻塞PHP包装器,用于wkhtmltopdf和wkhtmltoimage。
目录
特性
- 优雅的界面
- 从HTML或URI字符串创建PDF文件
- 从HTML或URI字符串创建图像文件
- 由于可以并行运行(本地),因此比其他工具更快
- 在盒子里,您可以使用
OptionGroup
功能来对不同情况进行选项分组
为什么
现有的包装器速度慢,使用阻塞API,并且没有正常面向对象接口(对于选项)。
这阻碍了编写快速且优雅的编程代码。
安装
composer require spacetab-io/wkhtmltopdf
使用
在您的机器上
简单情况
- 从HTML字符串创建PDF文件并将其保存到当前目录
use Amp\Loop; use Spacetab\WkHTML; Loop::run(static fn() => yield WkHTML\ToPDF::new()->fromHtml('<p>hello world</p>')->asFile('hi.pdf') );
- 从URI创建PDF文件并将其保存到当前目录
use Amp\Loop; use Spacetab\WkHTML; Loop::run(static fn() => yield WkHTML\ToPDF::new()->fromUrl('https://google.com')->asFile('google.pdf') );
- 使用自定义选项创建PDF文件
use Amp\Loop; use Spacetab\WkHTML; use Spacetab\WkHTML\OptionBuilder; Loop::run(static function () { $option = new OptionBuilder\PDF(); $option->addGrayscale(); yield WkHTML\ToPDF::new()->fromUrl('https://google.com')->asFile('google.pdf'); });
注意:默认使用UTF-8
编码。
并行
很简单!对吧?
Loop::run(static fn() => yield [ WkHTML\ToPDF::new()->fromHtml('<p>hi1</p>')->asFile('hi1.pdf'), WkHTML\ToPDF::new()->fromHtml('<p>hi2</p>')->asFile('hi2.pdf'), WkHTML\ToPDF::new()->fromHtml('<p>hi3</p>')->asFile('hi3.pdf'), ] );
选项组
因此,如果您处理许多报告或使用一组不同的选项创建PDF文件,您可以尝试使用选项组。示例
use Amp\Loop; use Spacetab\WkHTML; use Spacetab\WkHTML\OptionBuilder; use Spacetab\WkHTML\OptionBuilder\OptionBuilderInterface; use Spacetab\WkHTML\OptionGroup\OptionGroupInterface; Loop::run(static function () { $pdf = new WkHTML\ToPDF(new class implements OptionGroupInterface { public function __invoke(): OptionBuilderInterface { $option = new OptionBuilder\PDF(); $option->addGrayscale(); return $option; } }); yield $pdf->fromUrl('https://google.com')->asFile('google.pdf'); });
Docker
对于Docker中的使用,您可能希望使用此映像:https://github.com/spacetab-io/docker-amphp-php
FROM spacetabio/amphp-alpine:7.4-wkhtmltopdf-1.1.0 COPY * /app # cli commands should be created in the responsible service. CMD ["bin/service", "run"]
此库已在上述Docker容器中通过Circle CI进行测试。
许可证
MIT许可证
版权所有©2021 spacetab.io,Inc. https://spacetab.io
特此授予任何获得此软件及其相关文档文件(“软件”)副本的任何人无限制地处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,以及准许向提供软件的人进行此类行为,前提是以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,除非另有规定,否则不提供任何形式的保证,无论是明示的、暗示的或法定的,包括但不限于适销性、特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论该责任是基于合同、侵权或其他方式,是由于软件或其使用或任何其他原因而引起的。