gocanto / laravel-simple-pdf
简单的Laravel PDF生成器。
Requires
- php: ^7.2
- dompdf/dompdf: ^0.8.3
- guzzlehttp/guzzle: ^6.3
- illuminate/contracts: ^5.8
- illuminate/support: ^5.8
- illuminate/view: ^5.8
- psr/http-message: ^1.0
- symfony/http-foundation: ^4.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.13
- infection/infection: ^0.11.4
- mockery/mockery: ^1.0.0
- phpmd/phpmd: ^2.6
- phpro/grumphp: ^0.14.2
- phpstan/phpstan: ^0.11
- phpstan/phpstan-mockery: ^0.11.0
- phpstan/phpstan-phpunit: ^0.11.0
- phpunit/phpunit: ^8.0
- squizlabs/php_codesniffer: ^3.3
- vimeo/psalm: ^3.4
This package is auto-updated.
Last update: 2024-09-26 16:19:04 UTC
README
这个库是一个简约的按需和不可变的PDF生成器,适用于Laravel。它旨在在您需要使用直观的公共API生成可打印文件时,保持最小的摩擦。
Simple PDF附带了默认模板,您可以使用它来构建下一个PDF文件。您可以在这里查看其布局
安装
此库使用Composer来管理其依赖项。因此,在使用之前,请确保您已在计算机上安装了Composer。一旦完成,您就可以通过在终端中键入以下命令来拉取此库。
composer require gocanto/laravel-simple-pdf
默认模板实现
使用默认模板是最容易上手的方式。如下所示
use Gocanto\SimplePDF\Builder; use Gocanto\SimplePDF\TemplateContext; Route::get('default-template', function (Builder $builder) { $context = TemplateContext::make([ 'title' => 'foo', 'name' => 'bar', 'content' => '<h1>Some amazing content!</h1>', ]); $builder->make($context); return $builder->render(); });
这里发生了什么?
-
首先,我们导入了
Builder和Template Context对象;您可以将其视为生成PDF文件的经理。例如,Builder负责创建我们将按需渲染的Stream File,而另一个对象则持有要在默认模板中显示的数据。 -
其次,我们使用要在PDF文件中显示的所需数据创建了
TemplateContext对象。上下文对象是一个简单的值对象,它包含一些在blade文件中操作给定数组的有用方法。查看更多 -
最后,我们调用
make方法并传入我们的上下文对象,最后通过返回render功能来完成。
自定义模板实现
此实现与相同的API完成,但在顶部有一些配置。如下所示
use Gocanto\SimplePDF\Builder; use Gocanto\SimplePDF\TemplateContext; Route::get('custom-template', function (Builder $builder) { $context = TemplateContext::make([ 'title' => 'foo', 'name' => 'bar', 'content' => '<h1>Some amazing content!</h1>', ]); $builder->addLocation(resource_path('views/home')); $new = $builder->withTemplate('home'); $new->make($context); return $new->render(); });
如您所见,前三个步骤与默认实现相同,因此无需进一步解释。现在,我们需要澄清其设置的差异。
-
首先,我们通过调用
addLocation方法告诉Builder我们的模板根目录。这样,我们将有一个视图根目录来保存不同的模板。 -
其次,我们将通过调用
withTemplate方法注册自定义模板。请注意,这是一个不可变方法,因此我们将得到一个新的Builder实例。 -
最后,我们像上面使用默认模板那样调用
make和render方法。
特性
- 多模板能力。
- 状态不可变,这意味着所有如
withStream、withTemplate和withHeaders等withers方法都会返回一个新的Builder实例。 - 导出的流可用于自定义操作,这意味着您可以在渲染之前传递回调到render方法来操作给定的流。如下所示
use Psr\Http\Message\StreamInterface; $new->render(function (StreamInterface $stream) { //do something amazing with the stream echo $stream->getContents(); });
待办事项
- (Gus) 允许将渲染的HTML或Blades文件模板作为
TemplateContext内容字段的一部分。 - (感兴趣?) 允许更多引擎,如twig。
- (感兴趣?) 使其成为框架无关。
贡献
请随时分支此包,通过提交拉取请求以增强其功能来贡献。
许可协议
MIT许可(MIT)。请参阅许可文件获取更多信息。
我该如何感谢你呢?
为什么不给GitHub仓库加星标,并在Twitter上分享此仓库的链接呢?
别忘了在Twitter上关注我!
谢谢!
古斯塔沃·奥坎托。