1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > HTML转换成PDF 指定网页转换PDF(实际上是截取网页) pdf.js dompdf html2ps wkhtmltopdf

HTML转换成PDF 指定网页转换PDF(实际上是截取网页) pdf.js dompdf html2ps wkhtmltopdf

时间:2022-10-09 09:44:12

相关推荐

HTML转换成PDF 指定网页转换PDF(实际上是截取网页) pdf.js   dompdf   html2ps   wkhtmltopdf

开发背景

在实际开发过程中,有一些特殊需要:需要把相关网页转换成PDF格式,作为资料留存

下面讲一下我所遇到的相关需求:证书的发放,在前期的需求调研的时候甲方提出一个需求,电子证书需要实时生成并且通过邮件发送,于是我开始找相关的资料开始学习,于是找到了以下几个:

1.pdf.js

缺点:分页时会造成文字或表格截断等,所以自己要使用css去规范网页在一个页面中,所以只适合单网页生成pdf,这个看自己需求来顶

2.dompdf

要求:该库要求PHP> = 5.0,并且已启用mbstring和DOM扩展。 它还需要一些字体,这些字体通常在大多数计算机上都可用。

示例:

//引入资源文件

require_once "dompdf_config.inc.php";

//初始化对象

$dompdf = new DOMPDF();

$html = <<<'ENDHTML'

<html>

<body>

<h1>test</h1>

</body>

</html>

ENDHTML;

//载入HTML资源文件

$dompdf->load_html($html);

//重载

$dompdf->render();

//输出

$dompdf->stream("test.pdf");

总结:大型表或者长网页很容易导致内存不足。

3.html2ps

示例:

//引入资源文件

require_once "html2fpdf.php";

//初始化对象

$pdf=new HTML2FPDF();

//加载实例方法

$pdf->AddPage();

//获取生成页面

$fp = fopen("test.html","r");

//获取生成页面参数

$strContent = fread($fp, filesize("sample.html"));

//关闭

fclose($fp);

//加载实例方法

$pdf->WriteHTML($strContent);

//输出

$pdf->Output("test.pdf");

4.wkhtmltopdf

示例:

//需要生成pdf的页面(注意:在自己的项目中,该页面一定要是不需要有登录凭证的页面)

$http = “”;

//指定生成pdf的存放地址(注意:最好是项目的绝对路径:也就是带域名的全路径)

$root_url = ””’;

//执行pdf生成

shell_exec("wkhtmltopdf {$http} {$root_url}");

总结:单页面或者长度在网页上一页的话适用于 pdf.js 或者 dompdf

页面数据较多或者表格数据大适用于 html2ps 或者 wkhtmltopdf

选择其实并没有一个固定的方法,适用自己并且灵活使用才是最好了

参考主方法:

public function wkhtmltopdf(){//设置最大时间set_time_limit(0);//参数$uid= 1;//固定参数(需要装换的页面的地址:一定是不需要登录的页面,比如百度)$http = "";//固定参数$realname = '';//pdf格式$name = $uid.'_info.pdf';//文件夹地址$path = '';//创建文件夹if (!is_dir($path)){mkdir($path, 0777, true);chmod($path,0777);}$root_url = $path .'/'.$name;//引用三方插件生成pdf(注意,大页面可能有加载时间,转换可能不完全,需要设置睡眠时间)exec("wkhtmltopdf {$http} {$root_url}");$url = config_item('hos_base_url').'/upload/training/file/'.$uid.'/'.$name;$name = $realname.'-证件资料.pdf';$_name = iconv("UTF-8", "GB2312//IGNORE", $name);$_name = urlencode($_name);//输出结果var_dump(compact('url','name','root_url','_name'));}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。