使用支持所有语言(尤其是CJK)的TCPDF创建PDF

时间:2012-02-24 07:30:38

标签: php tcpdf cjk

有人可以用一个简洁明了的例子说明如何使用支持任何语言的文本字符串的TCPDF创建PDF吗?

似乎没有一种字体可以支持所有语言。我猜这个字体太大了?

我认为正确的方法是检测字符串的语言并将字体类型动态设置为兼容字体。如果是这种情况,则在检测每个字符串的语言时会变得非常复杂。

如果您使用“freeserif”字体,则支持大多数语言。但是它不支持CJK字体。我尝试了很多字体(kozminproregular,cid0jp,cid0kr,cid0jp,stsongstdlight)来获得对中文,日文和韩文的支持,但是它们似乎都不支持这三种语言。

4 个答案:

答案 0 :(得分:1)

这对我来说非常合适。谢谢!

为了确保生成的PDF文件不会变大,请使用FontSubsetting - 我生成的10页PDF只有几行中文(文凭名称)

$ PDF-> setFontSubsetting(真); => PDF文件略大925kb vs 755kb没有中文名称 如果你使用 $ PDF-> setFontSubsetting(假); => PDF文件大小约为17.5 MB ...

答案 1 :(得分:0)

通过以下步骤从arial ms unicode创建自己的字体来管理此问题:

在一个时间脚本中放置并执行这个 1.将一个ARIALUNI.ttf的副本放在tcpdf安装下的fonts文件夹中(我从windows \ fonts文件夹中取出了我的副本。
2.在tcpdf的examples文件夹中创建一个临时脚本,并用这一行执行:
$ fontname = $ pdf-> addTTFfont('../ fonts / ARIALUNI.ttf','TrueTypeUnicode','',32);
3.在pdf生成器脚本中设置新字体:
$ pdf-> SetFont('arialuni','',20);

现在pdf应该正确显示CJK字符 希望这有助于这么多人。

答案 2 :(得分:0)

我刚试过Etiennez0r的解决方案,但它对我没用。需要做一个小修改如下:

$fontname = TCPDF_FONTS::addTTFfont('../fonts/ARIALUNI.TTF', 'TrueTypeUnicode', '', 96);

答案 3 :(得分:0)

我设置:

$fontname = TCPDF_FONTS::addTTFfont(FCPATH . 'TCPDF/fonts/ARIALUNI.ttf', 'TrueTypeUnicode', '', 32);

....... //设置字体

$pdf->SetFont('dejavusans', '', 14);
$pdf->SetFont('cid0cs', '', 14);

导出日语效果很好