Dompdf 包在 laravel 中支持其他语言
Posted
技术标签:
【中文标题】Dompdf 包在 laravel 中支持其他语言【英文标题】:Dompdf package other languages support in laravel 【发布时间】:2018-01-24 15:43:07 【问题描述】:我在 laravel 项目中使用 dompdf 包创建了我的 pdf。但是当我想渲染其他语言(孟加拉语)而不是英语时
????????????????????????????
显示。
<body style="font-family: 'AdorshoLipi', Arial, sans-serif !important;">
<div style="border-style: solid; border-width: 2px; margin: 50px; padding: 10px;">
<div align="center">
<h2>
Anti-corruption commission hotline-106
</h2>
</div>
<div>
<p> Reference No : $complain->call_ref_id </p>
-- <br> --
<p> Date : $complain->created_at </p>
<p> Name : $complain->name </p>
<p> Address : $complain->address </p>
<p> Phone Number : $complain->phone_number </p>
<p> Against : $complain->against </p>
<p> Sector : $complain->department </p>
<p style="font-family: 'AdorshoLipi', Arial, sans-serif !important;"> Type : $complain->type </p>
<p> Complain Description : $complain->complain_description </p>
<p> Amount : $complain->amount </p>
<p> Status : $complain->status </p>
</div>
<div style=" margin-left: 450px; width: 100px; ">
<hr>
<label>Signature</label>
</div>
<div class="panel-primary">
</div>
</div>
</body>
【问题讨论】:
你在用laravel Dompdf包吗? 是的,我正在使用 laravel Dompdf。 希望你包含你的字体文件和设置@font-face
?
我将上面的代码添加到我的 pdf 文件中,但是没有用。
检查我的答案并按照给定的步骤,希望你找到解决方案。
【参考方案1】:
您可以将 TrueType 字体支持添加到 laravel Dompdf package。只需按照以下步骤从命令行将 TrueType 字体加载到 dompdf 中。
在这个包中使用 TrueType 字体系列有两种基本的方法:1) 使用 load_font.php 脚本 2) 使用@font-face css 规则在运行时加载字体
1) 使用 load_font.php 脚本load_font.php 是使用命令行运行的脚本,因此您需要从命令行运行命令。您可以从Dompdf utils 轻松获取此脚本
添加此实用程序后,在命令行界面中运行以下命令以从 dompdf 安装目录安装字体。
php load_font.php font_family /pathto/fontfile.ttf
注意: dompdf 目前仅支持 TrueType 字体。因此,在寻找字体时,请确保它采用 TrueType 格式。
2) 使用@font-face
css 规则在运行时加载字体
您只需在页面中添加以下样式脚本即可使用 TrueType 字体。
@font-face
font-family: 'font_family';
font-style: normal;
font-weight: normal;
src: url(http://example.com/fonts/fontfile.ttf) format('truetype');
加载上述字体系列后,您可以像这样使用它:<div style="font-family: font_family, sans-serif;">yourtextinotherlanguage</div>
确保您的文档指定使用 UTF-8,例如 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
。
更多信息也可以在here找到
【讨论】:
@Md.SukelAli:希望你能从我的回答中得到什么? 感谢您的回答 AddWeb Solution Pvt Ltd。运行 php 命令后,我的结果与通常的结果不同。通常结果:无法找到粗体文件。找不到斜体字面文件。找不到bold_italic 人脸文件。将 /home/fonts/firefly.ttf 复制到 /home/dompdf/lib/fonts/firefly.ttf... 为 /home/dompdf/fonts/firefly.ttf... 生成 .afm ?完成 - 创建字体文件。我的结果:将 SolaimanLipi_29-05-06.ttf 复制到 storage/fonts/SolaimanLipi_29-05-06.ttf... 为 storage/fonts/SolaimanLipi_29-05-06 生成 Adobe Font Metrics 路径不同。【参考方案2】:您需要在视图文件的样式标签内添加以下代码
@font-face
font-family: 'iskpota';
src: url('public_path()/fonts/your-font.ttf') format('truetype')
body
font-family: 'your-font', sans-serif;
然后您需要将字体文件包含在存储目录中。为此,在存储文件夹中创建一个名为“fonts”的文件夹,并在字体文件夹中包含“your-font.ttf”文件。
附言。您在存储位置添加的这些字体也应该在 public/fonts 文件夹中可用。
【讨论】:
已使用字体规则。举个例子:文本应该是 আমি 出来就像 আ ম ি【参考方案3】:为了更好地使用像孟加拉语这样的不同语言,您可以尝试使用 mpf。这个对 utf8 有好处。
【讨论】:
感谢您的回复。我真的不想使用另一个包,我对你建议的包不是很熟悉。【参考方案4】:尝试使用 utf8 解码您的输出:
utf8_decode($var)
【讨论】:
感谢您的回复。但我无法理解答案。请您详细说明您的答案。 我遇到了一些字符无法显示的问题。一个例子:如果我没记错的话,ä 被显示为一颗星。我使用 UTF-8 来解决这个问题。 (en.wikipedia.org/wiki/UTF-8)。所以这就是为什么我建议使用“utf8_decode”(php.net/manual/en/function.utf8-decode.php)。 确保正确的编码很重要,但你真的不应该使用utf8_decode
。它将您的文本重新编码为 iso-8859-1,该编码不支持的任何字符都将转换为问号。以上是关于Dompdf 包在 laravel 中支持其他语言的主要内容,如果未能解决你的问题,请参考以下文章
laravel中使用的PDF扩展包——laravel-dompdf和laravel-snappy
DOMPDF:图像不可读或为空。 (使用 barryvdh/laravel-dompdf)
Dompdf-Laravel Unicode 字符无法正确呈现
Laravel 5.4 pdf generate:下载pdf后,在dompdf中找不到图像或输入未知图像