5

我正在使用 tFPDF 生成 PDF。php 文件采用 UTF-8 编码。©例如,我想在 pdf 中作为版权符号输出。

我试过了iconv,,,html_entity_decodehtmlspecialchars_decode当我尝试将字符串解码并将其硬编码到另一个文件中并对其进行解码时,它会按预期工作。因此,由于某种原因,它没有在 PDF 中输出。我试过输出缓冲。我正在使用DejaVuSansCondensed.ttf(真字体)。

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

我没主意了。我尝试了双重解码,我到处检查以确保它没有在其他任何地方被编码。

4

5 回答 5

12

你需要这个:

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

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

于 2013-05-20T10:28:35.923 回答
3

实际上,fpdf项目FAQ对此有解释:

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); 

但是某些字符(例如 Euro)将无法正确翻译。如果 iconv 扩展可用,正确的方法如下:

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

因此,正如 emfi 所建议的,iconv() 和 html_entity_decode() PHP 函数的组合是您问题的解决方案:

$str = iconv('UTF-8', 'windows-1252', html_entity_decode("©"));
于 2014-04-11T09:45:47.623 回答
0

我很确定没有从 HTML 实体代码到它们的 UTF-8 等价物的自动转换。在这种情况下,我求助于手动字符串替换,例如:

$strOut = str_replace( "©", "\xc2\xa9", $strIn );
于 2012-05-15T03:38:20.233 回答
0

我已经解决了这段代码的问题:

$str = utf8_decode($str);
$str = html_entity_decode($str);
$str =  iconv('UTF-8', 'windows-1252',$str);
于 2016-05-02T14:31:58.243 回答
0

您还可以使用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

输出:√</p>

这样,您无需转换为 ISO-8859-1 或 Windows-1252 或使用另一个库 tFPDF 来处理特殊字符 :)

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

于 2018-05-18T07:38:51.843 回答