dotblue/nette-pdf

使用 mPDF 简化 Nette 应用中的 PDF 生成管理

3.3.0 2023-05-18 07:45 UTC

This package is not auto-updated.

Last update: 2024-09-19 13:58:10 UTC


README

需求

安装

  1. 使用 Composer 复制源代码
$ composer require dotblue/nette-pdf@~3.0
  1. 注册为 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');

变量 $invoiceDocumentDotBlue\Mpdf\Document 的实例,它提供简单的 API 用于打印或保存,以及用于链接图像。如果您希望将发票保存在硬盘上某个位置,您可以调用 saveTo() 方法。

$invoiceDocument->saveTo(__DIR__ . '/invoice.pdf');

或者您可以在浏览器中向用户显示文档

$invoiceDocument->printPdf();

变体

主题可以支持更多变体。实际上,方法 createPdf() 有第二个可选参数,其默认值是 default.latte。通过更改此值,您的主题可以支持多种变体,例如类型或本地化。

作为第三个参数,您可以传递一个 mPDF 的指令数组,这将覆盖您主题的默认设置。