jihel/html-to-pdf-bundle

该包的最新版本(dev-master)没有提供许可信息。

一个 SF2 包,用于方便地处理 PDF 生成和与 wkhtmltopdf 合并

dev-master 2020-03-01 16:28 UTC

This package is auto-updated.

Last update: 2024-09-29 04:08:35 UTC


README

一个 SF2 包,用于方便地处理 PDF 生成和与 wkhtmltopdf 及 pdftk 的拼接。此包仅提供一种 PHP 对象方式,基本会直接执行命令。如果您需要特定的功能,应创建自己的命令抽象类。

1- 安装

将插件添加到您的 composer.json require 部分

{
    "require": {
        "jihel/html-to-pdf-bundle": "dev-master",
    }
}

或者

php composer.phar require jihel/html-to-pdf-bundle:dev-master

安装包的二进制文件

aptitude install wkhtmltopdf pdftk xvfb

将包添加到您的 AppKernel.php

public function registerBundles()
{
    $bundles = array(
        ...
        new Jihel\Plugin\HtmlToPdfBundle\JihelPluginHtmlToPdfBundle(),
    );
}

2- 配置您的 config.yml

默认配置文件和说明可以在此处找到 这里

3- 使用

获取生成器服务 jihel.plugin.html_to_pdf.generator.pdf

  • 从控制器中

    /** @var \Jihel\Plugin\HtmlToPdfBundle\Generator\PdfGenerator $pdfGenerator */ $pdfGenerator = $this->get('jihel.plugin.html_to_pdf.generator.pdf');

  • 从服务中

    service: my.super.pdf.service: class: %my.super.mdf.service.class% arguments: { '@jihel.plugin.html_to_pdf.generator.pdf' }

该类提供两种方法,一种是从模板名称和数据生成 PDF,另一种是从数组列表或文件夹中所有 PDF 文件中拼接所有页面。

/**
 * Create a .pdf file from the given $template name with given $data parameters
 *
 * @param string $template
 * @param array $data
 * @return \SplFileObject
 */
public function create($template, array $data = array())

/**
 * Concatenate the given pdf files.
 * If you provide a path a folder,
 * concatenate them by alphabetic order
 *
 * @param \SplFileObject[]|string $files
 * @param bool $unlink
 * @return \SplFileObject
 * @throws Exception\NotASplFileObjectException
 */
public function concatenate($files, $unlink = false)

这两种方法都会返回一个暂时保存在 /tmp 文件夹中的 SplFileObject。

您可以使用以下方法读取执行消息

public function getLastConcatenateCommandResult()
public function getLastCreateCommandResult()

只能看到最后一次执行的命令输出。考虑使用 verbose 选项以获取更多详细信息。

4- 注意

use_xvfb 选项会消耗资源。考虑在运行着永久 xserver 的服务器上使用 wkhtmltopdf。

如果您想包含背景图片,请将绝对路径放入您的 $data 数组中。

5- 感谢

感谢 Romain Sebille(给我你的电子邮件!)进行了研究和命令生成器的第一轮迭代。感谢我的猫一直喵喵叫。感谢我抽出时间给懒惰的开发者写类。您可以通过此链接访问我的简历 这里