Dompdf-Laravel Unicode 字符无法正确呈现
Dompdf-Laravel Unicode character not rendering correctly
我正在使用 barryvdh/laravel-dompdf to load PDF's in my laravel application. I need to load custom unicode fonts(sinhala) in to the pdf. To do this, I downloaded my external fonts and copied the font folder and then it load to storage/fonts
directory by load_font.php。
我在 blade 文件中使用 css 如下:
@font-face {
font-family: Noto-2;
font-display: block;
src: url({{ asset('fonts/NotoSansSinhala-Light.ttf') }}) format("truetype");
}
body {
font-family: Noto-2 !important;
font-style: normal;
font-weight: 500;
font-size: 14px!important;
}
我还设置了元标记 UTF-8
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
HTML部分:
<td class="td_cus" rowspan="5">
<span class="title">මික් ආහාර සේවය</span>
<p class="company_address">
2 වැනි මහළ,<br>
<span style="font-family: helvetica !important;">M I C </span>සුපර් සෙන්ටර්,<br>
මොරටුව,<br>
ශ්රී ලංකාව.
</p>
</td>
Laravel 控制器:
$path = Storage::disk('local')->path("letters(".$letterCount."-letters).pdf");
$pdf = PDF::loadview('templates.letterSinhala', ['details' => $details])
->setPaper('a4', 'portrait')
->save($path);
当我正常加载我的 html 页面时,字体完美运行。但是,当我尝试在 PDF 中加载字体时,字体显示不正确。有人可以指导我如何正确加载字体吗?
普通页面(HTML视图)显示如下:
HTML view - correct text
我生成PDF时,显示如下:
PDF view - incorrect text
注意:请看上面两张图,这样可以很容易理解问题;
问题是 sinhala 文本在 PDF 上显示不正确,但是当我复制并粘贴某处时,文本显示正确。
关于如何解决这个问题有什么想法吗?请帮忙..
我们找到了 Mpdf, we changed library to Mpdf. The Mpdf has much Unicode fonts and also include Sinhala Unicode font - (Kaputaunicode) 的解决方案。
在僧伽罗语中,您只能使用 Kaputaunicode 字体,因为 other sinhala unicode fonts 不支持 Mpdf,其他僧伽罗语unicode 字体呈现与 Dompdf.
相同
但字体渲染不完美,一些复杂的组合无法正确渲染。
- Text diff. image
- Paragraph text
- 你可以从这张图片中得到灵感
无论如何 Mpdf 文本渲染比 Dompdf 好。
CSS 样式与比较 Dompdf 不同
而且Mpdf渲染时间比Dompdf少
在控制器中:
use Mpdf\Mpdf;
$path = Storage::disk('local')->path("_letters(".$letterCount."-letters).pdf");
$view = View::make('templates.letterSinhala', ['details' => $details]);
$html = $view->render();
$mpdf = new Mpdf(['mode' => 'UTF-8', 'format' => 'A4-P', 'autoScriptToLang' => true, 'autoLangToFont' => true]);
$mpdf->WriteHTML($html);
$mpdf->Output($path);
laravel 更好更简单的软件包是 vatttan/apdf
,将由
安装
composer require vatttan/apdf
在 github
中查看
我正在使用 barryvdh/laravel-dompdf to load PDF's in my laravel application. I need to load custom unicode fonts(sinhala) in to the pdf. To do this, I downloaded my external fonts and copied the font folder and then it load to storage/fonts
directory by load_font.php。
我在 blade 文件中使用 css 如下:
@font-face {
font-family: Noto-2;
font-display: block;
src: url({{ asset('fonts/NotoSansSinhala-Light.ttf') }}) format("truetype");
}
body {
font-family: Noto-2 !important;
font-style: normal;
font-weight: 500;
font-size: 14px!important;
}
我还设置了元标记 UTF-8
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
HTML部分:
<td class="td_cus" rowspan="5">
<span class="title">මික් ආහාර සේවය</span>
<p class="company_address">
2 වැනි මහළ,<br>
<span style="font-family: helvetica !important;">M I C </span>සුපර් සෙන්ටර්,<br>
මොරටුව,<br>
ශ්රී ලංකාව.
</p>
</td>
Laravel 控制器:
$path = Storage::disk('local')->path("letters(".$letterCount."-letters).pdf");
$pdf = PDF::loadview('templates.letterSinhala', ['details' => $details])
->setPaper('a4', 'portrait')
->save($path);
当我正常加载我的 html 页面时,字体完美运行。但是,当我尝试在 PDF 中加载字体时,字体显示不正确。有人可以指导我如何正确加载字体吗?
普通页面(HTML视图)显示如下:
HTML view - correct text
我生成PDF时,显示如下:
PDF view - incorrect text
注意:请看上面两张图,这样可以很容易理解问题;
问题是 sinhala 文本在 PDF 上显示不正确,但是当我复制并粘贴某处时,文本显示正确。
关于如何解决这个问题有什么想法吗?请帮忙..
我们找到了 Mpdf, we changed library to Mpdf. The Mpdf has much Unicode fonts and also include Sinhala Unicode font - (Kaputaunicode) 的解决方案。
在僧伽罗语中,您只能使用 Kaputaunicode 字体,因为 other sinhala unicode fonts 不支持 Mpdf,其他僧伽罗语unicode 字体呈现与 Dompdf.
相同但字体渲染不完美,一些复杂的组合无法正确渲染。
- Text diff. image
- Paragraph text
- 你可以从这张图片中得到灵感
无论如何 Mpdf 文本渲染比 Dompdf 好。
CSS 样式与比较 Dompdf 不同
而且Mpdf渲染时间比Dompdf少
在控制器中:
use Mpdf\Mpdf;
$path = Storage::disk('local')->path("_letters(".$letterCount."-letters).pdf");
$view = View::make('templates.letterSinhala', ['details' => $details]);
$html = $view->render();
$mpdf = new Mpdf(['mode' => 'UTF-8', 'format' => 'A4-P', 'autoScriptToLang' => true, 'autoLangToFont' => true]);
$mpdf->WriteHTML($html);
$mpdf->Output($path);
laravel 更好更简单的软件包是 vatttan/apdf
,将由
composer require vatttan/apdf
在 github
中查看