gears/pdf

此包已被废弃,不再维护。未建议任何替代包。

使用 HTML 或 DOCX 模板构建 PDF 的工具。

v0.4.1 2015-04-10 09:55 UTC

This package is not auto-updated.

Last update: 2022-04-21 06:56:00 UTC


README

寻找维护者,我现在几乎不做任何 PHP 开发,我已经转向其他领域,现在主要使用 dotnet core, node.js & golang。如果有人有兴趣接管这些项目,请与我联系 - brad@bjc.id.au

PS. 我知道这是最受欢迎的仓库之一,我知道有些人对此有一些问题。现在我使用 athenapdf 来满足所有我的 PDF 生成需求。

PDF Gear

Build Status Latest Stable Version Total Downloads License

这个项目最初是一个 DOCX 模板引擎。现在它已经发展成支持使用无头版本 webkitphantomjs 将 HTML 转换为 PDF。

DOCX 模板非常适合那些最终用户需要在一段时间内更新和管理的文档,尤其是文本密集型文档。例如,我使用它来自动生成一些法律合同,其中一些属性(如姓名、公司名称和地址)进行了简单的替换。客户,一家保险公司,可以提供更新的模板文档,可能包含对政策和其他条件的细微变化。

HTML 到 PDF 引擎非常适合需要更多文档设计控制的场景。对于我们程序员来说,使用标准的 HTML & CSS 和一点 JavaScript 也更自然。

如何安装

通过 composer 安装很简单

composer require gears/pdf:*

您还需要将以下内容添加到您的根 composer.json 文件中。

"scripts":
{
	"post-install-cmd": ["PhantomInstaller\\Installer::installPhantomJS"],
	"post-update-cmd": ["PhantomInstaller\\Installer::installPhantomJS"]
}

DOCX:如果您打算使用 DOCX 模板,您需要在您的宿主上安装 libre-office-headless 或 unoconv。

如何使用,基础

这两个 API 都是通过主要的 Pdf 类访问的。

将 Word 文档转换为 PDF(不使用模板)

$pdf = Gears\Pdf::convert('/path/to/document.docx');

将生成的 PDF 保存到文件

Gears\Pdf::convert('/path/to/document.docx', '/path/to/document.pdf');

将 HTML 文档转换为 PDF

$pdf = Gears\Pdf::convert('/path/to/document.html');

注意:保存到文件对 HTML 文档也是一样的。

DOCX 模板

默认情况下,DOCX 后端默认使用 libre-office-headless,要使用 unoconv,可以像这样覆盖转换器

$document = new Gears\Pdf('/path/to/document.docx');
$document->converter = function()
{
	return new Gears\Pdf\Docx\Converter\Unoconv();
};
$document->save('/path/to/document.pdf');

注意:目前 HTML 后端只使用 phantomjs。

DOCX 引擎有几个模板方法。第一个是 setValue,它会用 BAR 替换所有 ${FOO} 的实例

$document->setValue('FOO', 'BAR');

要克隆整个 DOCX xml 块,您可以在您的块周围使用像 ${BLOCK_TO_CLONE} & ${/BLOCK_TO_CLONE} 这样的标签。这个块内的所有内容将在生成的 PDF 中重复 3 次。

$document->cloneBlock('BLOCK_TO_CLONE', 3);

如果您需要用自定义的DOCX xml替换整个块,可以这样做。但您需要确保您的XML符合DOCX标准。这是一个非常底层的办法,我通常不会这样做。

$document->replaceBlock('BLOCK_TO_REPLACE', '<docx><xml></xml></docx>');

要删除整个块,例如,您可能只想向特定用户显示文档的某些部分。

$document->deleteBlock('BLOCK_TO_DELETE');

最后一种方法对于向表格中添加新行很有用。类似于cloneBlock方法。您将标签放置在表格的第一个单元格中。这行就是将要复制的行。

$document->cloneRow('ROW_TO_CLONE', 5);

有关更多示例,请参阅单元测试。这些包含生成最终PDF所需的PHP代码以及原始DOCX模板。

注意:HTML到PDF转换器没有这些相同的模板功能。显然,它只是标准的HTML,您可以按需进行模板化。

HTML PhantomJs 打印环境

这仍然处于开发中,可能会发生重大变化。所以我现在还没有对这个部分进行文档记录...

致谢

DOCX模板代码最初来自PHPWord

您可能仍然想使用PHPWord来生成您的DOCX文档。然后使用此包将生成的文档转换为PDF。

由Brad Jones开发 - brad@bjc.id.au