当前位置: 首页 > 工具软件 > dompdf > 使用案例 >

laravel 使用 dompdf/dompdf 生成pdf文件

樊杰
2023-12-01

安装dompdf/dompdf

COMPOSER_MEMORY_LIMIT = -1 composer require dompdf/dompdf

use Dompdf\Dompdf;
use Dompdf\Options;

class GeneratePactPdf
{
 public function __construct ($imageUrls = [])
    {
    	//首先设置一下html使用的字体.避免生成的pdf文件中文乱码(???)
    	$stype = "<style>
            @font-face {
                font-family: ziti;
                src: url('xxx.ttf');
            }

            @font-face {
                font-family: zt;
                src: url('xxx/msyh.ttf');
            }
             body {
        		width: 695px;
        		font-family: zt, serif;
        		font-size: 9px;
      		}
      		p {
				   font-size: 9px;
			}
		"
		$body = '
		<body>
			<p>小汪爱学习</p>
			<p>小汪别踩坑</p>
			<img class="titleImg" src="https://img2.baidu.com/it/u=3908142881,2459234098&fm=253&fmt=auto&app=138&f=JPEG?w=750&h=500" alt=""/>
	    </body>
	    '
    	 $dompdf = new Dompdf();
         $options = new Options();
         //设置使用远程图片填充pdf内容
         $options->setIsRemoteEnabled(true);
         //合并成html
        $html = $style.$body;
        //填充html内容
        $dompdf->loadHtml($html);
        //设置纸张大小
        $dompdf->setPaper('A4');
        $dompdf->setOptions($options);
        $dompdf->render();
        //获取pdf内容
        $pdfContent = $dompdf->output();
        //保存为xxx.pdf文件
        file_put_contents("xxx.pdf",$pdfContent);
        //或者直接上传至云平台 Storage::disk('oss')->put($fileNamePath, $pdfContent);
    }
 }
    //文字的ttf(一个加粗的一个不加粗的 )下载链接我放在百度网盘了有需要的自取
    //链接:https://pan.baidu.com/s/1kfyqFwqRdr8MZXVUJ8946w 
	//提取码:k1n0

关于遇到的一些坑的解决办法

1.中文乱码问题
—引入字体解决
2.中文字体加粗问题
—引入加粗字体,使用css样式font-weight会产生乱码
3.生成的pdf文字长度超出页面的范围
—这个只能够自己手动将过长的文字换行,虽然是根据html生成内容,但不会像html那样自适应

 类似资料: