是否有任何8位单字节字符编码,包括俄语(西里尔语)和德语字符? (用法:fpdf)

时间:2014-11-13 21:40:52

标签: encoding character-encoding fpdf

我正在开发基于fpdf 的项目,并使用特殊字符遇到麻烦。 我知道fpdf不支持任何utf8,我必须构建自己的字体才能使用特殊字符。 通过使用iso-8859-5编码以及德语字符以及其他一些编码,这已经适用于俄语字符

但是,没有我可以使用的编码,它支持两者吗?

除此之外: 这是一个已经使用了fpdf的古老而又大的项目。我知道还有其他版本,如mpdf等,可以处理utf8,但如果还有其他解决方案而不是替换整个系统,我真的很想这样做。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

没有这样的单一编码。

我找到的最接近的是CP771,它支持立陶宛语和俄语,但首先:它不能解决你的问题,第二:它无论如何都不会得到任何支持。

您可以为这两种语言定义单独的字体,我认为这是最简单的方法。

按照http://fpdf.de/tutorials/7/上的教程,我想这可行:

MakeFont('comic.ttf','comicDE.afm','cp1252');
MakeFont('comic.ttf','comicRU.afm','iso-8859-5');

然后:

$pdf->AddFont('ComicDE','','comicDE.php');
$pdf->AddFont('ComicRU','','comicRU.php');

当然,这要求您对文本进行编码并根据其所使用的语言以不同的方式将其添加到PDF中,但我认为这是图书馆的限制,无论如何都难以以不同的方式克服。< / p>

答案 1 :(得分:0)

我已经像这样扩展了FPDF,它似乎很好地处理了UTF8输入:

class PDF extends FPDF {

    function Cell( $w, $h = 0, $t = '', $b = 0, $l = 0, $a = '', $f = false, $y = '' ) {

        parent::Cell( $w, $h, iconv( 'UTF-8', 'windows-1252', $t ), $b, $l, $a, $f, $y );

    }

}