PHP 孤立的 FPDF 阿拉伯文文本
PHP FPDF Arabic Text Isolated
我正在尝试生成阿拉伯语的 pdf 文档,我使用 fpdf 生成相同的英文格式。在做了一些研究之后,我最终用 tfpdf 和 tcpdf 替换了 fpdf。后来弄乱了我的 pdf 布局,并且不能 100% 地使用阿拉伯语单词。所以我选择了 tfpdf。
在对 tfpdf 进行更多研究后,我得到了以下代码:
//to add custom font from unicode folder
$pdf->AddFont('Tajawal', '', 'Tajawal-Medium.ttf', true);
//to set the custom font
$pdf->SetFont('Tajawal','',18,true);
//helper function to rever the arabic string since I get the output reversed in the pdf
function utf8_strrev($str){
preg_match_all('/./us', $str, $ar);
return implode(array_reverse($ar[0]));
}
//$answer comes from a php and is an arabic string
$pdf->MultiCell(0 , 7, utf8_strrev($answer),1);
如图(生成的 pdf 的屏幕截图)所示,阿拉伯字母是 separated/disjoint,但由于反向辅助函数,它们的顺序正确。我们如何解决 tfpdf 中的这个问题?
附加信息
我使用的字体是 Tajawal,它是阿拉伯语 google 字体:https://fonts.google.com/specimen/Tajawal?subset=arabic
我已将这些添加到我的 html 文档中:
ini_set('default_charset', 'UTF-8');
<html dir="rtl" lang="ar">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
我也试过在数据库中插入相同的阿拉伯语字段,它们工作得很好。
经过一段时间的尝试,我发现最好的解决方案是使用 TCPDF for laravel 而不是 FPDF。您可以从这个小示例开始构建您的代码:
$html_content = '<h1 dir="rtl">يسبي</h1>';
PDF::SetTitle('Sample PDF');
PDF::SetFont('aealarabiya', '', 18);
PDF::AddPage();
PDF::writeHTML($html_content, true, false, true, false, '');
PDF::Output('SamplePDF.pdf');
您还可以查看此 link 以了解有关用于生成阿拉伯语 pdf 的 TCPDF 库的更多详细信息。
我正在尝试生成阿拉伯语的 pdf 文档,我使用 fpdf 生成相同的英文格式。在做了一些研究之后,我最终用 tfpdf 和 tcpdf 替换了 fpdf。后来弄乱了我的 pdf 布局,并且不能 100% 地使用阿拉伯语单词。所以我选择了 tfpdf。
在对 tfpdf 进行更多研究后,我得到了以下代码:
//to add custom font from unicode folder
$pdf->AddFont('Tajawal', '', 'Tajawal-Medium.ttf', true);
//to set the custom font
$pdf->SetFont('Tajawal','',18,true);
//helper function to rever the arabic string since I get the output reversed in the pdf
function utf8_strrev($str){
preg_match_all('/./us', $str, $ar);
return implode(array_reverse($ar[0]));
}
//$answer comes from a php and is an arabic string
$pdf->MultiCell(0 , 7, utf8_strrev($answer),1);
如图(生成的 pdf 的屏幕截图)所示,阿拉伯字母是 separated/disjoint,但由于反向辅助函数,它们的顺序正确。我们如何解决 tfpdf 中的这个问题?
附加信息
我使用的字体是 Tajawal,它是阿拉伯语 google 字体:https://fonts.google.com/specimen/Tajawal?subset=arabic
我已将这些添加到我的 html 文档中:
ini_set('default_charset', 'UTF-8');
<html dir="rtl" lang="ar">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
我也试过在数据库中插入相同的阿拉伯语字段,它们工作得很好。
经过一段时间的尝试,我发现最好的解决方案是使用 TCPDF for laravel 而不是 FPDF。您可以从这个小示例开始构建您的代码:
$html_content = '<h1 dir="rtl">يسبي</h1>';
PDF::SetTitle('Sample PDF');
PDF::SetFont('aealarabiya', '', 18);
PDF::AddPage();
PDF::writeHTML($html_content, true, false, true, false, '');
PDF::Output('SamplePDF.pdf');
您还可以查看此 link 以了解有关用于生成阿拉伯语 pdf 的 TCPDF 库的更多详细信息。