首页 » 网站建设 » php转换css技巧_PHP转换HTML为PDF文档的方法和常见问题

php转换css技巧_PHP转换HTML为PDF文档的方法和常见问题

访客 2024-11-29 0

扫一扫用手机浏览

文章目录 [+]

比对了一些插件,我们终极决定利用dompdf这个插件,插件的github在这里:https://github.com/dompdf/dompdf。

1. 利用方法

php转换css技巧_PHP转换HTML为PDF文档的方法和常见问题

安装可以利用composer或者直接下载源代码,利用require或者include引入。
详细的利用办法,可以参考以下示例代码。

// 引入命名空间use Dompdf\Dompdf;// 初始化dompdf工具$dompdf = new Dompdf();// 加载html文档内容$dompdf->loadHtml('hello world');// 设置纸张类型和方向$dompdf->setPaper('A4', 'landscape');// 渲染HTML为PDF$dompdf->render();// 流输出$dompdf->stream();

2. 常见问题和解决办法

php转换css技巧_PHP转换HTML为PDF文档的方法和常见问题
(图片来自网络侵删)

2.1 中文乱码的问题

插件对付字体和编码问题是这样形容的:

PDF documents internally support the following fonts: Helvetica, Times-Roman, Courier, Zapf-Dingbats, & Symbol. These fonts only support Windows ANSI encoding. In order for a PDF to display characters that are not available in Windows ANSI, you must supply an external font. Dompdf will embed any referenced font in the PDF so long as it has been pre-loaded or is accessible to dompdf and reference in CSS @font-face rules. See the font overview for more information on how to use fonts.The DejaVu TrueType fonts have been pre-installed to give dompdf decent Unicode character coverage by default. To use the DejaVu fonts reference the font in your stylesheet, e.g. body { font-family: DejaVu Sans; } (for DejaVu Sans). The following DejaVu 2.34 fonts are available: DejaVu Sans, DejaVu Serif, and DejaVu Sans Mono.

考试测验了一下,默认带的字体是无法渲染中文的,利用CSS的@font-face引入会报错(也可能是我打开办法不对)。
这样就只好自己引入一个字体了。

插件给了一个安装措辞文件的工具,地址再这里:https://github.com/dompdf/utils。

利用步骤:

下载或者复制load_font.php文件,放到dompdf文件夹内,与src和test文件夹同级修正load_font.php文件中引入的autoload.php为项目实际的位置在命令行中实行php load_font.php simkai /path/to/simkai.ttf

这样,我们就可以在html文档的css中利用font-family属性来指定字体了。

html { font-family: simkai;}

2.2 图片无法展示

插件该当是无法直接显示网络图片,以是须要将图片转换为BASE64格式才能显示。

将HTML文档中的所有图片转换为BASE64的办法:

function imgToBase64($html) { $html = preg_replace_callback('/<img(?:.?)src=\"大众(.?)\公众(?:.?)\/?>/', function($matches) { $imageInfo = getimagesize($matches[1]); $base64 = \公众\"大众 . chunk_split(base64_encode(file_get_contents($matches[1]))); $base64_image = 'data:' . $imageInfo['mime'] . ';base64,' . $base64; return str_replace($matches[1], $base64_image, $matches[0]); }, $html); return $html;}

这样转换实在性能影响挺大的,觉得性能不太好可以加一下缓存。

标签:

相关文章

yy脱机协议,探索虚拟世界的无限可能

随着互联网技术的飞速发展,虚拟世界逐渐成为人们生活中不可或缺的一部分。在我国,yy平台作为一家知名的直播互动平台,为广大用户提供了...

网站建设 2024-12-23 阅读0 评论0

一号店,电商时代的崛起与创新

在互联网高速发展的今天,电子商务已经渗透到人们生活的方方面面。我国电商市场近年来呈现出井喷式发展,其中一号店作为电商行业的佼佼者,...

网站建设 2024-12-23 阅读0 评论0

交互许可协议,构建数字时代的信任基石

在数字时代,互联网技术的高速发展给我们的生活带来了前所未有的便利。随着个人信息泄露、知识产权侵权等问题的频发,人们对于网络安全的担...

网站建设 2024-12-23 阅读0 评论0

XIB代码在iOS开发中的应用与优化

随着移动互联网的快速发展,iOS开发已经成为我国众多开发者的热门领域。XIB(Interface Builder)作为iOS开发中...

网站建设 2024-12-23 阅读0 评论0

X,介绍杂志背后的力量与影响力

在信息爆炸的时代,杂志作为一种传统的媒体形式,以其独特的魅力和深厚的文化底蕴,吸引了无数读者的目光。而在这众多杂志中,有一本名为“...

网站建设 2024-12-23 阅读0 评论0