html_entity_decode在FPDF(使用tFPDF扩展)(html_entity_dec

2019-07-29 08:01发布

我使用tFPDF生成PDF。 PHP文件是UTF-8编码。 我想© 例如,要在PDF作为版权符号输出。

我已经试过iconvhtml_entity_decodehtmlspecialchars_decode 。 当我把我试图解码和到不同的文件是硬编码和解码它的字符串,它按预期工作。 因此,出于某种原因没有被在PDF输出。 我曾尝试输出缓冲。 我使用DejaVuSansCondensed.ttf (True Type字体)。

链接tFPDF: http://fpdf.org/en/script/script92.php

我的想法。 我试过双解码,我到处检查,以确保它没有被编码的​​其他地方。

Answer 1:

你需要这个:

iconv('UTF-8', 'windows-1252', html_entity_decode($str));

html_entity_decode解码HTML实体。 但由于任何原因,你必须将它与UTF8 的iconv。 我想这是一个FPDF秘密...因为在正常的浏览器中查看它是否正确显示。



Answer 2:

Actully,FPDF项目帮助有这方面的解释:

http://www.fpdf.org/~~V/en/FAQ.php#q7

不要使用UTF-8编码。 标准FPDF字体使用ISO-8859-1或Windows 1252。 因此能够执行转换为ISO-8859-1与utf8_decode():

$str = utf8_decode($str); 

但是,一些字符如欧元将无法正确翻译。 如果扩展的iconv可用,这样做的正确方法如下:

$str = iconv('UTF-8', 'windows-1252', $str);

所以,作为EMFI表明,的iconv()和html_entity_decode()PHP函数的组合是解决你的问题:

$str = iconv('UTF-8', 'windows-1252', html_entity_decode("©"));


Answer 3:

我敢肯定没有提供HTML实体代码自动转换成他们的UTF-8当量。 在这样的情况下,我都使出手动字符串替换,例如:

$strOut = str_replace( "©", "\xc2\xa9", $strIn );


Answer 4:

我必须解决与此代码的问题:

$str = utf8_decode($str);
$str = html_entity_decode($str);
$str =  iconv('UTF-8', 'windows-1252',$str);


Answer 5:

您还可以使用setFont('Symbol')setFont('ZapfDingbats')来选择要打印的特殊字符。

define('TICK', chr(214)); # in font 'Symbol' -> print a tick symbol
...
$this->SetFont('Symbol', 'B', 8);
$this->Cell(5, 5, TICK, 0, 'L');    # will output the symbol to PDF

输出:√

这样一来,你就不会需要转换为ISO-8859-1或Windows 1252或使用其他库tFPDF特殊字符:)

请参阅: http://www.fpdf.org/en/script/script4.php的字体和字符表



文章来源: html_entity_decode in FPDF(using tFPDF extension)