gocanto/laravel-simple-pdf

简单的Laravel PDF生成器。

安装: 5

依赖: 0

建议者: 0

安全性: 0

星级: 22

关注者: 2

分支: 3

开放问题: 0

类型:php-bundle

0.0.4 2019-06-13 03:35 UTC

This package is auto-updated.

Last update: 2024-09-26 16:19:04 UTC


README

Total Downloads Latest Stable Version Build status

这个库是一个简约的按需和不可变的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();
});

这里发生了什么?

  • 首先,我们导入了BuilderTemplate 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实例。

  • 最后,我们像上面使用默认模板那样调用makerender方法。

特性

  • 多模板能力。
  • 状态不可变,这意味着所有如withStreamwithTemplatewithHeaders等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上关注我

谢谢!

古斯塔沃·奥坎托。