解决Laravel-Excel导出为PDF的一些问题

先付上需求实现的效果图:

$excel = Excel::raw(new QuotationPriceExport($deta), \Maatwebsite\Excel\Excel::DOMPDF);

Qiniu::uploadToTemp($excel, self::QUOTATION_EXPORT_FILE_NAME . date(‘YmdHis’) . ‘.pdf’);

导出时会遇到PDF乱码的问题

这是因为DOM PDF需要字体,但是字体又没有安装导致的

首先先下载字体(宋体 SimSun):

https://ufonts.com/download/simsun.html

下载完字体后,需要下载dom pdf官方提供的字体导入工具文件:

https://github.com/dompdf/utils/blob/master/load_font.php

将他放到项目中,并且指定好autoload.php文件的位置

执行命令:

php load_font.php simsun G:\ufonts.com_simsun.ttf

输出:

Unable to find bold face file.
Unable to find italic face file.
Unable to find bold_italic face file.
Copying G:\ufonts.com_simsun.ttf to E:\www\vendor\dompdf\dompdf/lib/fonts/ufonts.com_simsun.ttf…
Generating Adobe Font Metrics for E:\www\vendor\dompdf\dompdf/lib/fonts/ufonts.com_simsun…

安装完后在 Excel 内指定字体文件为 simsun 即可解决乱码问题

表格边框问题

导出的 Excel 的表格边框有指定的为空白,反而没有指定的地方有边框

这是包的问题,有空看看能不能给修复一下

目前的解决方案是反着来就行

表格长宽指定失效

Excel 内的长宽指定无效,似乎走的是默认用的自动调整的逻辑

这个问题目前还在看


感觉还是 Excel 格式的比较方便,先导出成 Excel,再在 Office 里选择打印成 PDF 格式会很方便,且样式好看

这个格式的导出很慢,耗时是直接导出 Excel 的十倍