2012-05-09 146 views
4

我正在使用tFPDF生成PDF。 php文件是UTF-8编码的。 例如,我想要©,作为版权符号在pdf中输出。FPDF中的html_entity_decode(使用tFPDF扩展)

我试过iconv,html_entity_decode,htmlspecialchars_decode。当我尝试解码字符串并将其硬编码到不同的文件并对其进行解码时,它会按预期工作。所以出于某种原因,它不会在PDF中输出。我试过输出缓冲。我正在使用DejaVuSansCondensed.ttf(真正的字体)。

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

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

帮助!

+0

[可能的DUP](http://stackoverflow.com/questions/9327960/convert- delascii-characters-delinsentity-codes-ins-to-utf8-in-mysql-on-t),没有回答':(' – halfer

回答

9

,你需要这样的:

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

html_entity_decode解码HTML实体。但由于任何原因,您必须将其转换为utf8,并使用iconv。我想这是一个fpdf秘密......在正常的浏览器视图中,它显示正确。

+0

我在哪里需要找到这个代码? – SAR

+0

在任何你想做的pdf输出。例如:$ pdf-> Write(5,iconv('UTF-8','windows-1252',html_entity_decode($ str))); – emfi

0

我很确定没有从HTML实体代码到UTF-8等价物的自动转换。在这样的情况下,我都使出手动字符串替换,如:

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

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

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

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

$str = utf8_decode($str); 

但是,一些字符,例如欧元将不会被正确地转换。如果 的iconv扩展可用,做正确的方法是:

​​

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

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

用于研究;) – emfi

0

我有这个代码解决该问题:

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