整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

手把手的教你用PHP将HTML生成PDF

ompdf是一个可以将HTML生成PD并保留样式效果的PHP第三方扩展。

下面就一步步讲解如何使用:

一、通过composer安装

composer require dompdf/dompdf


安装过程

二 、编写测试代码

(1)引用autoload.php

include 'vendor/autoload.php'; 

(2)实例化Dompdf

$dompdf=new \Dompdf\Dompdf();

(3)加载HTML

$dompdf->loadHtml($html); //$html 为HTML字符串

(4)设置纸张和方向

$dompdf->setPaper('A4', 'landscape'); //纸张大小和纸张方向

(5)生成PDF并下载

 $dompdf->render();
$dompdf->stream('数据字典.pdf');

三、导出PDF测试,发现中文乱码了


导出PDF发现中文乱码了

四、解决中文乱了问题

(1)下载支持中文的字体包放到根目录下(和vendor目录同级),这里演示使用的是阿里巴巴的普惠字体(字体格式是ttf的,小编原先下载使用的字体格式是otf格式的无效)

(2)下载dompdf字体安装工具解压到根目录(和vendor目录同级)

下载地址:https://github.com/dompdf/utils

(3)在命令行(CMD定位到根目录)下执行命令

php load_font.php "puhui" Alibaba-PuHuiTi-Light.ttf

执行成功后在路径(vendor\dompdf\dompdf\lib\fonts)下就会出现刚才的字体

(4)在样式文件中指定使用刚才安装的字体

body{font-family:puhui;}

(5)再次导出PDF测试成功


乱码问题解决

日有网友希望有一篇用PHP生成PDF的文章教程,好的今天我们就讲一讲怎么样用PHP将HTML生成PDF

我们使用的开源类库就是TCPDF

GITHUB地址:

https://github.com/tecnickcom/TCPDF

composer安装:

composer require tecnickcom/tcpdf

demo示例:

https://tcpdf.org/examples/

这里主要讲的是讲HTML生成PDF因为HTML格式绝大部分够用了,其它个性化的功能大家看下官方的DEMO就行了比如生成图表等

下面说下具体使用方式:

1.实例化TCPDF对象

$pdf = new TCPDF(PDF_PAGE_ORIENTATIN, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

2.设置标题关键字等(步骤可以省略)

$pdf->SetCreator(PDF_CREATOR);

$pdf->SetAuthor('Nicola Asuni');

$pdf->SetTitle('TCPDF演示');

$pdf->SetSubject('TCPDF Tutorial');

$pdf->SetKeywords('TCPDF, PDF, example, test, guide');

3.设置字体(这步很重要不然中文乱码)

$fontname = TCPDF_FONTS::addTTFfont('Droid Sans Fallback.ttf', 'TrueTypeUnicode', '', 32);

$pdf->SetFont($fontname, '', 20);

4.添加个页面

$pdf->AddPage();

5.将HTML生成PDF

$pdf->writeHTML($html);

6.输出(默认直接在浏览器显示)

$pdf->Output();

$pdf->Output('123.pdf','D');//这个是下载,其他方式请替换参数

7.生成后的效果

链接列表等演示

生成图片演示

表格演示

最后总结:

1.一定要设置字体,否则中文乱码。最好使用文本的设置方法和字体。网上的设置字体的方法虽然能解决但是用pdfparser这个类读取生成后的PDF内容还是乱码(读取PDF内容的方法在我另一篇文章中有说到)

2.如果你设置了PDF的头和脚 还需在设置一遍字体

$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, 'PDF头部标题', '代码庸医');

$pdf->setHeaderFont(Array($fontname, '', PDF_FONT_SIZE_MAIN));

HP将HTML实体转换为普通字符,我们可以使用PHP htmlspecialchars_decode()函数将特殊的HTML实体转换为正常字符,如&,<,>(即&,<,>)等HTML实体字符恢复到正常字符。



下面我们就结合代码示例,为大家介绍PHP将HTML实体转换为普通字符的实现方法。

代码示例如下:

<?php
$my_str = "I'm good & <b>"boy "</b>.";
echo htmlspecialchars_decode($my_str);
echo "<br>";
echo htmlspecialchars_decode($my_str, ENT_QUOTES);
echo "<br>";
echo $my_str;

输出结果如下:



htmlspecialchars_decode函数表示将特殊的 HTML 实体转换回普通字符。

说明 :

string htmlspecialchars_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 ] )

其参数:string表示要解码的字符串,flags表示用下列标记中的一个或多个作为一个位掩码,来指定如何处理引号和使用哪种文档类型。默认为 ENT_COMPAT | ENT_HTML401。

此函数的作用和 htmlspecialchars() 刚好相反。它将特殊的HTML实体转换回普通字符。

被转换的实体有:&, " (没有设置ENT_NOQUOTES 时), ' (设置了 ENT_QUOTES 时), < 以及>。

该htmlspecialchars_decode()函数与htmlspecialchars()将特殊HTML字符转换为HTML实体的函数相反。

本篇文章就是关于PHP将HTML实体转换为普通字符的方法介绍,简单易懂,希望对需要的朋友有所帮助!

以上就是PHP怎么将HTML实体转换为普通字符的详细内容,更多请关注其它相关文章!

更多技巧请《转发 + 关注》哦!