使用php第三方包dompdf将网页装换成pdf文件【1】

本文介绍如何使用ThinkPHP5.0及Laravel5.0以上版本通过Composer安装Dompdf,并实现网页内容转换为PDF的方法。此外,还详细说明了解决中文乱码及图片显示等问题的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装方法:

thinkphp5.0以及laravel5.0以上可以通过composer安装 在命令行切换到项目根目录,运行以下命令:

composer require dompdf/dompdf

接下来在controller中新建方法:

    public function pdf(){
        $url = 'https://www.anzichen.com.cn';
        $dompdf = new \Dompdf\Dompdf();
        $str=file_get_contents($url);
        $dompdf->loadHtml($str);

        // 设置纸张尺寸
        $dompdf->setPaper('A4');

        // 把网页转换成pdf
        $dompdf->render();

        // 在浏览器输出pdf文件
        $dompdf->stream('网页转换成pdf'.time('YmdHis').'.pdf');
}

此时访问次控制器对应的url,即可输出pdf文件 遇到坑: Q:中文字符无法识别,全部显示为????? A: 1、下载load_font.php,此文件的功能是安装中文字体,运行命令:

         git clone  https://github.com/dompdf/utils.git
     2、复制 load_font.php到 dompdf目录中,与lib 和 src 目录同级。
    3、下载中文字体,推荐下载 Droid Sans Fallback 字体,也可用雅黑字体,【雅黑字体会导致导出文档过大】下载链接 http://www.17ziti.com/info/71250.html

安装字体,将字体传到服务器目录下,在命令行运行以下命令:

       php vendor/dompdf/dompdf/load_font.php  ‘Droid‘  public/font//DroidSansFallback.ttf
注意上面vendor/dompdf/dompdf/load_font.php和public/font//DroidSansFallback.ttf都是相对于当前命令行所在目录的相对路径,具体路径请自己修改。
  运行后,若没报错,则在 vendor/dompdf/dompdf/lib/fonts/下生了   Droid.ttf,Droid.ufm    这两个文件。
  4、在前端模板css样式文件中设置
  ```
@font-face
{
font-family:Droid;
src: url(/public/font/DroidSansFallback.ttf)
}
body {
font-family:Droid;
}

```

注意 CSS 样式中的 font-family 设置为 之前运行load_font.php中设置的字体名。

此时再次访问该地址即可输出中文无乱码pdf

Q:图片无法显示 A:暂时未找到方法解决,推荐使用mpdf包,教程:http://www.anzichen.com.cn/article/phpmpdfpdf-ge31eyn

其它问题欢迎加入QQ群96094083讨论

转载于:https://my.oschina.net/babyanzichen/blog/1840168

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值