社区 首页 教程频道

解决Dompdf中文乱码问题

2019-6-24 15:14
Dompdf可以把HTML内容生成PDF文件,但默认不支持中文显示。
在解决Dompdf的中文乱码问题之前,请确认已通过Composer在项目中安装好Dompdf库。

下载Dompdf的工具包
该工具包的Git地址为:https://github.com/dompdf/utils。
下载完成后,解压,复制其中的load_font.php文件到项目下的verdor/dompdf/dompdf目录下,与lib和src目录同级。

修改load_font.php文件
因为之前把该文件直接放在了dompdf目录下,因此需要其默认的加载autoloader的路径如下:

// 1. [Required] Point to the composer or dompdf autoloader
require_once "../../autoload.php";

下载字体文件
可以使用任意支持中文的字体文件,这里以宋体(simsun)为例,下载地址:https://ufonts.com/download/simsun/82073.html。
下载完成后,我们把该字体文件simsun.ttf直接放在D盘根目录下。

安装字体
在放置load_font.php的dompdf目录下,使用系统命令行工具执行该文件,具体命令如下:

D:\myproject\vendor\dompdf\dompdf> php load_font.php simsun D:\simsun.ttf

注意:命令中的字体名称simsun不要加引号,否则后续将不可用。

命令执行成功后,将显示如下信息:


检查字体是否安装成功
如果字体安装成功,则可以在项目的vendor/dompdf/dompdf/lib/fonts目录中看到新生成的simsun.ttf及simsun.ufm文件。
并且可以在该目录下的dompdf_font_family_cache.php文件中看到如下相关信息:

'simsun' => array(
    'normal' => $fontDir . '/simsun',
    'bold' => $fontDir . '/simsun',
    'italic' => $fontDir . '/simsun',
    'bold_italic' => $fontDir . '/simsun',
  )
使用中文字体
在需要进行pdf转换的HTML中使用中文字体的方式与普通的HTML相同,可以是内联样式,也可以使用在<style>标签中。

//Init Dompdf object
$dompdf = new Dompdf();

//Generate HTML content
$html = '<h3 style="font-family:simsun;color:blue;">Hello World 你好</h3>';
$dompdf->loadHtml($html);

//Setup the paper size and orientation
$dompdf->setPaper('A4', 'landscape');

//Render the HTML as PDF
$dompdf->render();

//Output the generated PDF to Browser
$pdfname = '中文abc';
$dompdf->stream($pdfname);

路过

雷人

握手

鲜花

鸡蛋
粉丝 阅读317 回复0
上一篇:
【centos7】添加开机启动服务/脚本发布时间:2019-06-18
下一篇:
linux通过curlftpfs挂载FTP空间,当文件夹使用发布时间:2019-06-26

周一至周日9:00-18:00

反馈建议

service#bjjem.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! © 2001-2019