gpt4 book ai didi

php - 中文字符的 DomPDF 生成

转载 作者:可可西里 更新时间:2023-10-31 23:40:00 26 4
gpt4 key购买 nike

我正在尝试使用 dompdf 生成包含中文字符的 PDF。这是我的代码:

require('dompdf/dompdf_config.inc.php');
$dompdf = new DOMPDF();
mb_internal_encoding('UTF-8');
def("DOMPDF_UNICODE_ENABLED", true);
$html = ' <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<style>
*{ font-family: DejaVu Sans, font-size: 12px;}
</style> </head> <body>
忠烈祠
</body>
</html>';
$dompdf->load_html($html);
$dompdf->render();
$output = $dompdf->output();
$filename = 'a.pdf';
$path = $filename;
file_put_contents($path, $output);

问题是当我用 chrome 或 adobe reader 打开它时生成的 PDF 只显示正方形,但它在 Mozilla firefox 中看起来没问题。

有什么建议吗?

最佳答案

首先,将 def("DOMPDF_UNICODE_ENABLED", true); 移动到 require 之上,因为 dompdf 中包含的 def 函数仅在常量不存在时才定义常量。当您包含 dompdf_config.inc.php 时,该常量将在那时设置。另外,请改用 define

其次,您需要一种不同的字体。 dompdf 中包含的 DejaVu 字体不支持 CJK。有关概述,请阅读我对 Dompdf and set different font-family 的回答.

如果您目前没有字体,您可以尝试查找 Firefly Sung .无论您决定使用什么字体,它都应该是 TTF,以便 dompdf 使用它。

这是一个通过 @font-face CSS 规则使用 Firefly Sung 的示例,无需安装:

<!DOCTYPE html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
@font-face {
font-family: 'Firefly Sung';
font-style: normal;
font-weight: 400;
src: url(http://eclecticgeek.com/dompdf/fonts/cjk/fireflysung.ttf) format('truetype');
}
* {
font-family: Firefly Sung, DejaVu Sans, sans-serif;
}
</style>
</head>

<body>
<div>忠烈祠</div>
</body>

</html>

关于php - 中文字符的 DomPDF 生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28435198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com