跳到内容

dompdf/dompdf

Dompdf公司

生成状态 最新版本 总下载次数 许可证

Dompdf是一个HTML到PDF的转换器

在其核心,dompdf(主要)是一个CSS 2.1标准符合用PHP编写的HTML布局和渲染引擎。它是一个样式驱动的渲染器:它将下载并读取外部样式表、内联样式标记和样式单个HTML元素的属性。它还支持最具表现力的HTML属性。

本文档适用于最新的稳定代码,可能不反映当前释放。有关发布的代码,请导航到适当的标记.


查看演示并询问任何关于的问题堆栈溢出在里面讨论.

关注我们推特.


特征

  • 处理大多数CSS 2.1和一些CSS3属性,包括@import、@media&@页面规则
  • 支持大多数表示HTML 4.0属性
  • 支持本地或通过http/ftp(通过fopen包装)
  • 支持复杂的表,包括行和列跨度、分隔和折叠边界模型,单个单元样式
  • 图像支持(gif、png(8、24和32位,带alpha通道)、bmp和jpeg)
  • 由于R&OS PDF类,不依赖于外部PDF库
  • 内联PHP支持
  • 基本SVG支持(请参阅下面的“限制”)

要求

  • PHP 7.1或更高版本
  • DOM扩展
  • MBString扩展
  • php字体库
  • php-svg-lib

请注意,某些必需的依赖项可能有进一步的依赖项(尤其是php-svg-lib需要sabberworm/php-css-parser)。

建议

  • GD(用于图像处理)
    • 此外,IMagick或GMagick扩展提高了某些图像类型的图像处理性能
  • OPcache(OPcache、XCache、APC等):提高性能

有关详细信息,请访问wiki:https://github.com/dompdf/dompdf/wiki/要求

关于字体和字符编码

PDF文档内部支持以下字体:Helvetica、Times-Roman、,Courier、Zapf-Dingbats和Symbol。这些字体仅支持Windows ANSI编码。为了使PDF显示中不可用的字符Windows ANSI,必须提供外部字体。Dompdf将嵌入任何引用的PDF中的字体,只要它已经预先加载或可以被dompdf和CSS@font-face规则中的引用。请参阅字体概述有关如何使用字体的更多信息。

这个DejaVu TrueType字体已预先安装默认情况下为dompdf提供合适的Unicode字符覆盖。使用DejaVu字体引用样式表中的字体,例如。正文{font-family:DejaVu Sans;}(针对DejaVu Sans)。可用的DejaVu 2.34字体如下:DejaVu Sans、DejaVu Serif和DejaVu Sans Mono。

易于安装

使用编写器安装

使用安装作曲家,只需要此软件包的最新版本。

作曲家需要dompdf/dompdf

确保从Composer加载了自动加载文件。

//在项目加载的早期,需要Composer自动加载程序
//请参见:http://getcomposer.org/doc/00-intro.md
要求 '供应商/autoload.php';

下载并安装

下载dompdf的打包存档并将其解压缩到dompdf将驻留的目录

使用打包发行版自动加载器加载dompdf、库、,和PHP中的helper函数:

//包括自动加载器
要求一次(_O) 'dompdf/autoload.inc.php';

注意:打包发布是根据语义命名的版本控制(域pdf_MAJOR-MINOR-PATCH.zip). 所以1.0.0发布版本为dompdf1-0-0.zip。这是唯一的下载其中包括Dompdf的自动加载器及其所有依赖项。

使用git安装

从命令行,切换到dompdf将在其中运行的目录驻留并运行以下命令:

git克隆https://github.com/dompdf/dompdf.git光盘dompdf/lib文件git克隆https://github.com/PhenX/php-font-lib.gitphp-font-lib基因光盘php-font-lib基因git校验0.5.1光盘..git克隆https://github.com/PhenX/php-svg-lib.gitphp-svg-lib光盘php-svg-libgit校验v0.3.2光盘..git克隆https://github.com/sabberworm/PHP-CSS-Parser.gitphp-css解析器光盘php-css解析器git校验8.1.0

在PHP中需要dompdf及其依赖项。有关详细信息,请参阅utils项目中的自动加载器.

框架集成

快速入门

只需将HTML传入dompdf并流式传输输出即可:

//引用Dompdf命名空间
使用 Dompdf公司\Dompdf公司;//实例化并使用dompdf类
$域名pdf=新的 Dompdf公司();$域名pdf->loadHtml(加载HTML)(“你好,世界”);//(可选)设置图纸尺寸和方向
$域名pdf->setPaper(设置纸张)(“A4”,“横向”);//将HTML呈现为PDF
$域名pdf->提供();//将生成的PDF输出到浏览器
$域名pdf->流动();

设置选项

在dompdf实例化期间设置选项:

使用 Dompdf文件\Dompdf公司;使用 Dompdf公司\选项;$选项=新的 选项();$选项->设置('默认字体',“快递”);$域名pdf=新的 Dompdf公司($选项);

或在运行时

使用 Dompdf公司\Dompdf公司;$dompdf格式=新的 Dompdf公司();$选项=$域名pdf->获取选项();$选项->设置默认字体(“信使”);$域名pdf->设置选项($选项);

请参见Dompdf\选项以获取可用选项的列表。

资源参考要求

为了保护潜在的敏感信息,Dompdf强加对从本地文件系统或web引用的文件的限制。

通过基于web的协议访问的文件具有以下要求:

  • Dompdf选项“isRemoteEnabled”必须设置为“true”
  • PHP必须启用curl扩展或allow_url_fopen设置设置为true

通过本地文件系统访问的文件具有以下要求:

  • 文件必须位于为Dompdf“chroot”选项指定的路径内

限制(已知问题)

  • 表单元格不可分页,这意味着表行必须适合单个页面。
  • 解析元素时,元素会呈现在活动页面上。
  • 嵌入“原始”SVG(<svg><路径…></svg>)还没有工作,你需要链接到外部SVG文件,或使用如下DataURI:
    $html格式='<img src=“data:image/svg+xml;base64,'.base64_编码($高级副总裁) .'" ...>';
    观看#320以取得进展
  • 不支持CSS flexbox。
  • 不支持CSS网格。
  • 单个Dompdf实例不应用于呈现多个HTML文档因为持久化的解析和呈现工件会影响未来的呈现。

“捐赠”按钮

如果你觉得这个项目有用,请考虑捐款。任何捐赠的资金都将用于帮助该项目的进一步发展。)