dotblue / nette-pdf
使用 mPDF 简化 Nette 应用中的 PDF 生成管理
3.3.0
2023-05-18 07:45 UTC
Requires
- php: >=7.3
- mpdf/mpdf: ~7.0 || ~8.0
- nette/application: ~3.0
- nette/di: ~3.0
- nette/utils: ~3.0 || ~4.0
README
需求
- PHP 7.3+
- mpdf/mpdf ~7.0
- nette/application >= 3.0
- nette/di >= 3.0
- nette/utils >= 3.0
安装
- 使用 Composer 复制源代码
$ composer require dotblue/nette-pdf@~3.0
- 注册为 Configurator 扩展
extensions:
mpdf: DotBlue\Mpdf\DI\Extension
配置
首先,您需要告诉插件您存储 PDF 文档模板的位置。
mpdf:
templatesDir: %appDir%/templates/pdf
在应用中,您通常有几种希望生成的 PDF 文档类型。这种类型称为 主题。每个主题都应该在 templatesDir
中有自己的目录。您可以通过许多指令配置主题,这些指令是 mPDF 支持的。
mpdf:
themes:
invoice:
margin:
left: 20
right: 20
top: 20
bottom: 20
默认设置如下
encoding: utf-8
img_dpi: 120
format: A4
margin:
left: 0
right: 0
top: 0
bottom: 0
每个主题都内置了对外部样式的支持。如果您将 style.css
文件放入主题目录中,它将自动包含在 PDF 文档中。
字体
可以通过以下方式配置自定义字体
fonts:
roboto:
R: %appDir%/fonts/Roboto.ttf
支持的类型是 R(常规)、B(粗体)、I(斜体)和 BI(粗体 & 斜体)。
用法
只有一个服务:DotBlue\Mpdf\DocumentFactory
。假设您在我们的 invoice
主题目录中有 default.latte
文件,您可以创建新的 PDF 文档如下
$invoiceDocument = $documentFactory->createPdf('invoice');
变量 $invoiceDocument
是 DotBlue\Mpdf\Document
的实例,它提供简单的 API 用于打印或保存,以及用于链接图像。如果您希望将发票保存在硬盘上某个位置,您可以调用 saveTo()
方法。
$invoiceDocument->saveTo(__DIR__ . '/invoice.pdf');
或者您可以在浏览器中向用户显示文档
$invoiceDocument->printPdf();
变体
主题可以支持更多变体。实际上,方法 createPdf()
有第二个可选参数,其默认值是 default.latte
。通过更改此值,您的主题可以支持多种变体,例如类型或本地化。
作为第三个参数,您可以传递一个 mPDF 的指令数组,这将覆盖您主题的默认设置。