我正在研究基于PHP的系统,我需要生成PDF文件以用于报告目的。我正在使用fpdf库。
现在这些PDF文件中可能有Bangla字符。我尝试了很多方法,并尝试了Adding new fonts and encoding support fpdf,但没有一个适合我。
尝试在最后1天解决此问题,但没有成功。如果有人有任何解决方案或至少知道如何做到这一点。
修改
我使用了Solaiman-Lipi字体。我生成了$wpdb->query(
$wpdb->prepare(
"Update " . $prefix . "postmeta
Set meta_key = %s
Where post_id = %d
And meta_key Like '%product_price%'" ,
'wpc_product_price',$supportMetaID
)
);
&相应地solaiman-lipi.php
文件,然后在代码下方使用以生成PDF:
solaiman-lipi.z
修改
我可以选择附加图片:
修改
添加了PDF中的输出内容。这是Bangla Text。
答案 0 :(得分:2)
您可以使用mPDF而不是fpdf作为库,并使用nikosh作为bangla字体。首先,你必须在mpdf库的/ ttfonts文件夹中复制nikosh.ttf字体文件。 然后,更改config_fonts.php文件。添加
"nikosh" => array(
'R' => "Nikosh.ttf",
'useOTL' => 0xFF,
),
在fontdata数组中。 由于Bangla与印度语有相似之处,因此我在印度语字体后添加了Bangla字体(Nikosh)信息。
有关详细信息,您可以看到以下文章:
http://jobnstudy.blogspot.com/2016/10/how-to-write-bengali-bangla-unicode-pdf.html
答案 1 :(得分:1)
我想我找到了这个问题的解决方案。我已经尝试了一些支持PHP的库(dompdf,TCPDF,FPDF,mPDF),但并非所有库都能正常工作。我没有找到dompdf的任何unicode支持, tcpdf工作但字体坏了。所以我尝试了mPDF,它给了我预期的输出。 我正在将这个库用于我的laravel项目。要将mPDF与laravel项目一起使用,您需要遵循laravel-mpdf的文档。 链接:https://github.com/niklasravnsborg/laravel-pdf
在成功安装库之后,您需要执行以下步骤,以获取其他语言或bangla支持。
首先下载支持语言的字体(例如:bangla我已经下载了solaimanLipi.ttf)并将其保存到资源文件夹内的fonts文件夹中。如果没有字体文件夹就可以创建它。 2.在config / pdf.php文件中,在返回数组
中添加这些代码'font_path'=> BASE_PATH( '资源/字体/'),
'font_data'=> [
'examplefont'=> [
'R'=> 'ExampleFont-Regular.ttf',//常规字体
'B'=> 'ExampleFont-Bold.ttf',//可选:粗体字体
'我'=> 'ExampleFont-Italic.ttf',//可选:斜体字体
'BI'=> 'ExampleFont-Bold-Italic.ttf'//可选:粗体斜体字体
'useOTL'=> 0xFF时,
'useKashida'=> 75,
]
// ...添加任意数量的内容。
]
examplefont是您想要使用的属性名称。但在此属性中粘贴您的字体名称。
示例:
'bangla' => [
'R' => 'SolaimanLipi.ttf', // regular font
'B' => 'SolaimanLipi.ttf', // optional: bold font
'I' => 'SolaimanLipi.ttf', // optional: italic font
'BI' => 'SolaimanLipi.ttf' // optional: bold-italic font
'useOTL' => 0xFF,
'useKashida' => 75,
]
现在在您的视图文件中使用此CSS脚本:
<style>
body {
font-family: 'examplefont', sans-serif;
}
</style>
在您的控制器中:
function generate_pdf() {
$data = [
'foo' => 'bar'
];
$pdf = PDF::loadView('pdf.document', $data);
return $pdf->stream('document.pdf');
}
提示:pdf.document是您的视图文件名。 在命名空间的顶部使用PDF
如果您正确执行此步骤,它将100%正常工作。 这是我的输出 Output
N.B:这是我的第一篇文章。如果我以正确的格式写评论有任何错误,请考虑一下。 谢谢, Mahabubul Islam Mehedi
答案 2 :(得分:0)
它适用于孟加拉语。您可以通过此过程使用任何字体。 我将此包用于laravel项目barryvdh/laravel-dompdf 通过引用此软件包,可以找到解决方案:
示例:
'bangla' => array(
'R' => $fontDir . '/SolaimanLipi', // regular font
'B' => $fontDir . '/SolaimanLipi', // optional: bold font
'I' => $fontDir . '/SolaimanLipi', // optional: italic font
'BI' => $fontDir . '/SolaimanLipi', // optional: bold-italic font
'useOTL' => 0xFF,
'useKashida' => 75,
)
您必须像这样在HTML或body标签中指定此字体系列:
body {
font-family: Arial, sans-serif, 'bangla';
}
您还可以通过这种方式使用'kalpurush'和其他孟加拉字体。通过在字体系列组中指定更多系列,您可以将多种语言打印到pdf中。