drewlabs/php-dompdf

php dompdf/dompdf 库的简单包装

v0.9.0 2022-11-15 15:34 UTC

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