jihel / html-to-pdf-bundle
一个 SF2 包,用于方便地处理 PDF 生成和与 wkhtmltopdf 合并
Requires
- php: >=5.3.3
- symfony/symfony: >=2.3
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(给我你的电子邮件!)进行了研究和命令生成器的第一轮迭代。感谢我的猫一直喵喵叫。感谢我抽出时间给懒惰的开发者写类。您可以通过此链接访问我的简历 这里