drewlabs / php-dompdf
php dompdf/dompdf 库的简单包装
Requires
- php: >=7.1
- dompdf/dompdf: ^1.0.2|^2.0.1
- nyholm/psr7: ^1.5
- symfony/http-foundation: ^5.1.5
This package is auto-updated.
Last update: 2024-09-15 19:36:35 UTC
README
此库基于[https://github.com/dompdf/dompdf] PHP 库构建,该库用于将 HTML 文档转换为 PDF。它为用户提供从文件路径、psr7 流对象甚至 PHP SplFileInfo 类读取文档的 API。它还提供了继承自 symfony HTTP 响应对象的响应对象,以便返回 PDF 作为响应。
安装
该库是根据 composer 要求构建的,需要 composer
包管理器进行安装。要将库安装到您的 PHP 项目中
composer require drewlabs/php-dompdf
使用
要创建 PDF 实例,请使用包提供的代理函数
use function Drewlabs\Dompdf\Proxy\DomPdf; const pdf = DomPdf([/* DOMPdf otpions */]);
该包提供了一个用于创建 DOMPdf 实例的工厂类。对于面向对象的爱好者,创建 dom-pdf 实例就像
use Drewlabs\Dompdf\Factory; $factory = new Factory; const pdf = $factory->create([/* DOMPdf otpions */]);
- 读取 DOM 字符串
Dompdf
为开发者提供了从系统路径、SplFileInfo
实例、psr7 兼容的流对象或内联字符串加载 DOM 字符串的多种方法。
通用方法
对于上述所有类型,该库提供了一个用于读取 DOM 字符串的单一方法
use function Drewlabs\Dompdf\Proxy\DomPdf; use Nyholm\Psr7\Factory\Psr17Factory; const pdf = DomPdf([/* DOMPdf otpions */]); // Reading DOM string from \SplFileInfo $document = new \SplFileInfo; $pdf = $pdf->read($document); // Reading from Psr7 compatible stream $document = (new Psr17Factory)->createStreamFromFile($pathOrStream); $pdf = $pdf->read($document); // Reading from disk path $pdf = $pdf->read('/home/users/dev/documents/document.pdf'); // Read from raw string $pdf = $pdf->read(" <!DOCTYPE html> <html lang=\"en\"> <head> <meta charset=\"UTF-8\" /> <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" /> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /> <title>Document</title> </head> <body></body> </html>" ); // Read from URI resource $pdf = $pdf->read("https://www.google.com");
除了通用方法 Domdfp::read
之外,该库还提供了两个额外的用于读取原始字符串或 URL 资源的方法。
use function Drewlabs\Dompdf\Proxy\DomPdf; $pdf = DomPdf([/* DOMPdf otpions */]); $pdf->html(" ... html string"); // To load content from URI resource $pdf = $pdf->resource('file:///home/users/dev/documents/document.pdf');
实用方法
- 设置 PDF 方向
setPaperOrientation($size, $orientation)
是用于修改纸张大小和方向的 API。
size : Drewlabs\Dompdf\Size::LETTER, Drewlabs\Dompdf\Size::LEGAL, Drewlabs\Dompdf\Size::A4 orientation : Drewlabs\Dompdf\Orientation::LANDSCAPE, Drewlabs\Dompdf\Orientation::PORTRAIT
// ... $pdf = DomPdf([/* DOMPdf otpions */]); $pdf->constraints(Drewlabs\Dompdf\Size::A4, \Drewlabs\Dompdf\Orientation::PORTRAIT);
- 打印 PDF 内容
该库为开发者提供了一个通过 Dompdf::print
API 返回生成 PDF 字符串的方法。要打印原始文档
$pdf = DomPdf([/* DOMPdf otpions */]); $pdf->print(); // Returns a raw string
- HTTP 响应
Dompdf::download(string $name)
API 允许开发者从 PDF 内容创建响应对象。
$pdf = DomPdf([/* DOMPdf otpions */]); // It's a late content read, meaning it does not send content to request client unless // user code manually call send() on the response object $response = $pdf->download(); // Symfony HTTP response // To send the response to request client, developper must call $response->send() method $response->prepare(new Request::createFromGlobals())->send();
- 流式内容
该库为开发者提供了一个将 PDF 内容流式传输到请求客户端的方法。
$pdf = DomPdf([/* DOMPdf otpions */]); $pdf->stream(); // Internally uses PHP echo method to write to the output buffer