spacetab-io/wkhtmltopdf

基于AMP构建的非阻塞PHP包装器,用于wkhtmltopdf

1.0.3 2020-06-14 15:14 UTC

This package is auto-updated.

Last update: 2024-09-09 03:17:28 UTC


README

CircleCI codecov

使用AMP构建的非阻塞PHP包装器,用于wkhtmltopdf和wkhtmltoimage。

目录

特性

  • 优雅的界面
  • 从HTML或URI字符串创建PDF文件
  • 从HTML或URI字符串创建图像文件
  • 由于可以并行运行(本地),因此比其他工具更快
  • 在盒子里,您可以使用OptionGroup功能来对不同情况进行选项分组

为什么

现有的包装器速度慢,使用阻塞API,并且没有正常面向对象接口(对于选项)。

这阻碍了编写快速且优雅的编程代码。

安装

composer require spacetab-io/wkhtmltopdf

使用

在您的机器上

简单情况

  1. 从HTML字符串创建PDF文件并将其保存到当前目录
use Amp\Loop;
use Spacetab\WkHTML;

Loop::run(static fn() => 
  yield WkHTML\ToPDF::new()->fromHtml('<p>hello world</p>')->asFile('hi.pdf')
);
  1. 从URI创建PDF文件并将其保存到当前目录
use Amp\Loop;
use Spacetab\WkHTML;

Loop::run(static fn() => 
  yield WkHTML\ToPDF::new()->fromUrl('https://google.com')->asFile('google.pdf')
);
  1. 使用自定义选项创建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

特此授予任何获得此软件及其相关文档文件(“软件”)副本的任何人无限制地处理软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,以及准许向提供软件的人进行此类行为,前提是以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,除非另有规定,否则不提供任何形式的保证,无论是明示的、暗示的或法定的,包括但不限于适销性、特定目的的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论该责任是基于合同、侵权或其他方式,是由于软件或其使用或任何其他原因而引起的。