目录
钥匙要点
入门
高级用法
结论
如何使用Composer(用于PHP的依赖关系管理工具)安装DOMPDF?您可以安装作曲家,然后运行命令“ Composer需要DOMPDF/DOMPDF”。这将在您的项目中下载并安装DOMPDF库。
使用,是的,DOMPDF支持CSS。您可以在HTML中使用内联CSS,也可以链接到外部CSS文件。生成PDF时,DOMPDF将应用样式。但是,请注意,并非所有CSS属性都得到支持。
>我可以生成具有多个页面的PDF吗?如果您的HTML内容足够长以跨越多页,则DOMPDF将自动将其分为页面。您还可以使用CSS手动添加页面断路。
>如何将生成的PDF保存到文件中?使用“输出”方法和“ file_put_contents”功能生成的PDF到文件。例如,您可以使用'file_put_contents('mypdf.pdf',$ dompdf-> output())'将pdf保存到名为'mypdf.pdf'的文件。
> dompdf Secure吗?
首页 后端开发 php教程 PHP主|使用DOMPDF将HTML转换为PDF

PHP主|使用DOMPDF将HTML转换为PDF

Feb 23, 2025 am 10:36 AM

PHP主|使用DOMPDF将HTML转换为PDF

PDF是一种标准格式,最初是由Adobe创建的,用于在固定的layout文档中表示文本和图像。 Web应用程序以PDF格式支持下载数据(例如发票或报告)并不少见,因此在本文中,我们将如何轻松地使用PHP轻松生成PDF文档。 DOMPDF是一个很棒的库,能够从HTML标记和CSS样式中生成PDF(主要是CSS 2.1符合CSS 2.1,并支持某些CSS3属性)。我们可以使用这些熟悉的技术来决定我们的内容应如何外观,然后轻松将其转换为固定的文档。该图书馆还有许多其他有用且有趣的功能。

钥匙要点

  • > DOMPDF是一个可以将HTML标记和CSS样式转换为PDF文档的PHP库,使其对需要以PDF格式支持下载数据的Web应用程序有用。
  • >
  • 要使用DOMPDF,需要通过GitHub或Composer安装它,并且需要PHP> = 5.0,并启用MBSTRING和DOM扩展。 HTML标记可以作为字符串或从文件或URL加载,然后渲染到PDF中。 >
  • > DOMPDF是一种功能强大的工具,但它具有一些局限性,例如不耐受成型的HTML,并且仅对CSS3的支持有限。建议审查图书馆的文档和源代码,以充分了解其功能和潜在问题。

入门

DOMPDF可在GitHub上获得,可以使用Composer安装。诚然,基于作曲家的安装并正确运行仍然有些棘手,因此我建议您只使用Git安装DOMPDF。 该库需要PHP> = 5.0,并启用了MBSTRING和DOM扩展。它还需要一些字体,这些字体通常在大多数机器上可用。 导航到要放置库并执行的任何地方:
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
登录后复制
登录后复制
登录后复制
通过下载DOMPDF,让我们写一个简短的示例,该示例将生成一个简单的PDF。
<span><span><?php
</span></span><span><span>set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/dompdf");
</span></span><span>
</span><span><span>require_once "dompdf_config.inc.php";
</span></span><span>
</span><span><span>$dompdf = new DOMPDF();
</span></span><span>
</span><span><span>$html = <span><span><<<'ENDHTML'</span>
</span></span></span><span><span><html>
</span></span><span><span> <body>
</span></span><span><span>  <h1>Hello Dompdf</h1>
</span></span><span><span> </body>
</span></span><span><span></html>
</span></span><span><span><span>ENDHTML<span>;</span></span>
</span></span><span>
</span><span><span>$dompdf->load_html($html);
</span></span><span><span>$dompdf->render();
</span></span><span>
</span><span><span>$dompdf->stream("hello.pdf");</span></span>
登录后复制
登录后复制
要在项目中使用库,我们首先在包含大部分DOMPDF配置的Dompdf_config.inc.php中拉动。它还加载一个自动加载器和自定义配置文件,在其中我们可以覆盖默认配置参数。 HTML标记作为字符串作为load_html()方法的字符串。另外,我们可以使用load_html_file()方法从文件或URL加载标记。它接受文件网页的文件名或URL作为参数。 Render()方法将HTML渲染到PDF中,我们准备转储PDF文件。 Stream()将结果PDF作为浏览器的附件发送。 Stream()方法具有可选的第二个参数,一个选项数组:
  • >接受范围 - 布尔值,发送“ Accept-Ranges”标头(默认为FALSE)。
  • 附件 - 布尔值,发送“ content-disposition:actactment”标头强迫浏览器显示保存提示符(默认情况下为true)。
  • compress - boolean,启用内容压缩(默认为true)。
  • >
  • 我们在这里生成了非常简单的PDF,但这不是很实际。实际上,我们通常会对纸张尺寸,页面方向,字符编码等有要求。我们可以设置数量的配置选项,以使DOMPDF更适合我们的现实世界需求。所有这些都在dompdf_config.inc.php中列出和解释 这将它们设置为默认值。您可以通过更新自定义配置文件dompdf_config.custom.inc.inc.php来更改这些值。一些重要的设置是:
    > dompdf_default_paper_size - 设置PDF文档的默认纸张大小。可以在include/cpdf_adapter.cls.php中找到支持的纸张尺寸(默认值为“字母”)。
  • >
  • > dompdf_temp_dir - 指定DOMPDF使用的临时目录。确保此位置由Web Server帐户写作。
  • > dompdf_unicode_enabled - 设置PDF是否使用Unicode字体(默认值为true)。
  • > dompdf_enable_remote - 启用来自远程站点的图像或CSS样式的包含(默认为false)。
  • >
  • debug_layout - 是否要在PDF文件中的每个HTML块周围渲染一个盒子,这对于调试布局很有用(默认为false)。
  • >

高级用法

现在,让我们谈谈DOMPDF的一些高级用途。也许我们希望将生成的PDF文档保存到磁盘上,而不是将其发送到浏览器。以下是:
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
登录后复制
登录后复制
登录后复制
我们不像上一个示例中调用stream(),而是使用output()将pdf返回为字符串。它也接受了可选的选项数组,但是唯一可用的选项是压缩(默认值为true)。 DOMPDF还允许我们通过将PHP脚本嵌入其呈现的HTML中,将标题或页脚添加到生成的PDF中。但是,由于处理任意代码如果您不小心,则可能会构成安全风险,因此默认情况下,控制此功能的配置值将关闭。我们需要首先设置dompdf_enable_php选项true。 启用了Inline PHP执行后,将在脚本中提供PDF对象,我们可以使用该对象来操纵页面。我们可以在页面内的任何地方添加文本,行,图像,矩形等。
<span><span><?php
</span></span><span><span>set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/dompdf");
</span></span><span>
</span><span><span>require_once "dompdf_config.inc.php";
</span></span><span>
</span><span><span>$dompdf = new DOMPDF();
</span></span><span>
</span><span><span>$html = <span><span><<<'ENDHTML'</span>
</span></span></span><span><span><html>
</span></span><span><span> <body>
</span></span><span><span>  <h1>Hello Dompdf</h1>
</span></span><span><span> </body>
</span></span><span><span></html>
</span></span><span><span><span>ENDHTML<span>;</span></span>
</span></span><span>
</span><span><span>$dompdf->load_html($html);
</span></span><span><span>$dompdf->render();
</span></span><span>
</span><span><span>$dompdf->stream("hello.pdf");</span></span>
登录后复制
登录后复制
该脚本直接嵌入到HTML标记中,并首先打开一个对象,以便我们可以影响渲染。所有图形将记录到该对象中,我们可以将此对象添加到所有或选定的页面(尽管有限制)。 接下来,我们获取页面的实际宽度和高度,以计算要添加的页脚的坐标。另外,在添加文本内容时,我们需要提供字体对象。 font_metrics :: get_font()允许我们创建所需的对象。我们还使用get_font_height()将给定字体的高度以其字体尺寸为单位,以计算页脚内容的定位。方法get_font_width()返回给定字体和字体大小的文本宽度,该字体大小也用于我们的计算中。 线()方法从点(x1,y1)到(x2,x2)绘制一条线。请注意,我们提供的颜色值不是实际的RGB值。基础PDF类需要0到1之间的值,因此我们将RGB值转换为这些新值。为了获得更好的近似,您可以将其除以255。 我们使用page_text()方法添加每个页面的页码,该方法接受x和y位置,要添加的文本,字体对象,字体大小和颜色。 DOMPDF自动替换{page_num}的值 和{page_count}在每个页面中,并使我们可以使用$ PDF。 当PDF渲染时,页脚部分将看起来像这样:

PHP主|使用DOMPDF将HTML转换为PDF

有可能避免使用内联PHP并直接从PHP中实现相同的效果,例如:
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
登录后复制
登录后复制
登录后复制
请注意,我们在调用$ DOMPDF-> RENDER()之后放置代码,因为我们基本上正在修改渲染的PDF。

结论

在本文中,我们讨论了如何使用DOMPDF轻松将HTML转换为PDF。尽管DOMPDF是一个很棒的库,但它不是生成PDF文档的防弹解决方案。它确实有一些局限性和问题。 DOMPDF并不是真正耐受型HTML的耐受性,并且大桌子很容易使您无法记忆。一些基本的CSS功能(例如Float)并不完全支持,并且对CSS3的支持只有有限的支持。如果您需要DOMPDF不支持的功能,那么WKHTMLTOPDF之类的功能可能是您更好的解决方案。尽管如此,DOMPDF非常简单,适合大多数PDF出口需求。 很难解释库中图书馆提供的所有功能,因此请务必查看文档和源代码,以了解添加回调,使用自定义字体等的酷功能。很高兴为您提供我有限的专业知识。随时留下您的问题,并在评论部分分享您的经验。 通过fotolia 图像 >如果您喜欢阅读这篇文章,您会喜欢学习的;从大师那里学习新鲜技能和技术的地方。成员可以立即访问SitePoint的所有电子书和交互式在线课程,例如Jump Start Php。 >对本文的评论已关闭。对PHP有疑问吗?为什么不在我们的论坛上询问? >常见问题(常见问题解答)关于使用DOMPDF 将HTML转换为PDF

什么是dompdf,为什么使用?>

如何使用Composer(用于PHP的依赖关系管理工具)安装DOMPDF?您可以安装作曲家,然后运行命令“ Composer需要DOMPDF/DOMPDF”。这将在您的项目中下载并安装DOMPDF库。

>我可以将CSS与DOMPDF?

​​

使用,是的,DOMPDF支持CSS。您可以在HTML中使用内联CSS,也可以链接到外部CSS文件。生成PDF时,DOMPDF将应用样式。但是,请注意,并非所有CSS属性都得到支持。

>如何将图像添加到我的pdf?

>您可以通过在HTML中加入“ IMG”标签来将图像添加到您的PDF中。 。 “ SRC”属性应指向图像文件。 DOMPDF将在生成的PDF中包括图像。

>我可以生成具有多个页面的PDF吗?如果您的HTML内容足够长以跨越多页,则DOMPDF将自动将其分为页面。您还可以使用CSS手动添加页面断路。

如何设置页面大小和方向?

您可以使用“ set_paper”方法设置页面大小和方向。例如,您可以使用'$ dompdf-> set_paper('a4','landscape')将页面大小设置为a4,而对景观的方向。

我可以将dompdf与laravel一起使用吗? >

是的,DOMPDF可以与Laravel一起使用。有一个称为“ Laravel-dompdf”的Laravel软件包,它提供了一种在Laravel应用程序中使用DOMPDF的简便方法。

>

>如何将生成的PDF保存到文件中?使用“输出”方法和“ file_put_contents”功能生成的PDF到文件。例如,您可以使用'file_put_contents('mypdf.pdf',$ dompdf-> output())'将pdf保存到名为'mypdf.pdf'的文件。

>我可以发送生成的pdf作为Web应用程序中的响应?是的,您可以将生成的PDF作为Web应用程序中的响应发送。您可以使用“流”方法将PDF直接发送到浏览器。

> dompdf Secure吗?

dompdf通常被认为是安全的,但是像任何软件一样,它可能具有漏洞。重要的是要保持您的DOMPDF安装最新,并审查DOMPDF团队提供的安全指南。

以上是PHP主|使用DOMPDF将HTML转换为PDF的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

在PHP API中说明JSON Web令牌(JWT)及其用例。 在PHP API中说明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

会话如何劫持工作,如何在PHP中减轻它? 会话如何劫持工作,如何在PHP中减轻它? Apr 06, 2025 am 12:02 AM

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

描述扎实的原则及其如何应用于PHP的开发。 描述扎实的原则及其如何应用于PHP的开发。 Apr 03, 2025 am 12:04 AM

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

在PHPStorm中如何进行CLI模式的调试? 在PHPStorm中如何进行CLI模式的调试? Apr 01, 2025 pm 02:57 PM

在PHPStorm中如何进行CLI模式的调试?在使用PHPStorm进行开发时,有时我们需要在命令行界面(CLI)模式下调试PHP�...

PHP 8.1中的枚举(枚举)是什么? PHP 8.1中的枚举(枚举)是什么? Apr 03, 2025 am 12:05 AM

PHP8.1中的枚举功能通过定义命名常量增强了代码的清晰度和类型安全性。1)枚举可以是整数、字符串或对象,提高了代码可读性和类型安全性。2)枚举基于类,支持面向对象特性,如遍历和反射。3)枚举可用于比较和赋值,确保类型安全。4)枚举支持添加方法,实现复杂逻辑。5)严格类型检查和错误处理可避免常见错误。6)枚举减少魔法值,提升可维护性,但需注意性能优化。

如何在系统重启后自动设置unixsocket的权限? 如何在系统重启后自动设置unixsocket的权限? Mar 31, 2025 pm 11:54 PM

如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

解释PHP中的晚期静态绑定(静态::)。 解释PHP中的晚期静态绑定(静态::)。 Apr 03, 2025 am 12:04 AM

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

See all articles