FPDF:欧元符号不可能。我已经尝试了所有的解决方案

时间:2017-09-29 17:30:06

标签: php utf-8 fpdf

首先,我知道这个问题已经在这里提出了很多问题,但我已经尝试了所有的解决方案,但仍然无法正常工作。我的账单中的符号 由“?”翻译。

我尝试了什么?

使用iconv:

iconv("UTF-8", "ISO-8859-1//TRANSLIT", '€');
iconv('UTF-8', 'windows-1252', $yourtext);
//etc.

尝试制作新字体并加载:

$pdf->AddFont('DejaVu','','DejaVuSansCondensed.ttf',true);
$pdf->AddFont('DejaVu', 'B', 'DejaVuSansCondensed-Bold.ttf', true);
//etc.

将€字符定义为常量并打印

define('EURO',chr(128));

使用utf8_encode和解码功能等

没什么,abutsutamente什么都没有对我有用。我很惊讶其中一些解决方案适用于其他人

另一个问题也是关于特殊字符。我有问题,当它有重音时保存pdf文件名

$pdf->Output('I',$number.'-'.$client.'.pdf');

windows保存文件,例如“Ô字符

我正在使用Ubuntu 16.04.3 LTS和utf-8

非常感谢你

4 个答案:

答案 0 :(得分:0)

FPDF不支持多字节字符。您可以使用tFPDF(FPDF的衍生物)。 tFPDF使用PHP多字节字符串函数并生成以UTF-8编码的输出。 FPDF没有。

答案 1 :(得分:0)

我通常使用$pdf>TEXT(5,5,'Price: '.chr(164).' 5,00');

,它将在创建的pdf文件中写一行价格:€5,00

但是仅在已使用(生成的)字体文件中嵌入€符号时,该功能才有效!

开箱即用的是“ verdana或arial”,情况并非如此。 因此,查找一个不错的.TTF字体文件(例如opensans.ttf)并使用
http://www.fpdf.org/makefont/make.php生成2个需要的新字体文件,这些文件将在位置164处包含欧元符号。在该页面上使用ISO-8859-15编码来生成扩展了ascii范围的文件。新生成的字体文件分别名为opensans.php和opensans.z都需要复制到您的Web服务器的字体目录中,以便fpdf.php可以使用它们。现在,使用以下命令将新字体添加到pdf生成器中:

$pdf->AddFont('opensans','','OpenSans-Regular.php'); //regular
$pdf->SetTextColor(0, 0, 100); //textcolor
$pdf->SetFont('opensans','','6'); //activefont
$pdf>Text(5,5,'Price: '.chr(164).' 5,00'); //text starting at 5,5

完成。

答案 2 :(得分:0)

我成功地运用了多种技术:

strtr(iconv('UTF-8','CP1252',$value),[chr(128)=>chr(160)])

有关信息,fdf pdf编码最终功能:

private function encode_fdf_field($value)
{
    return trim(addcslashes(strtr(iconv('UTF-8','CP1252',$value),[chr(128)=>chr(160)]),"\n\r\t\\()"));
}

答案 3 :(得分:0)

您只需将php文件编码为 ANSI
然后,如果您在单元格中写入€,它将显示€,等等!