Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php FPDF:欧元符号不可能。我已经尝试了所有的解决方案_Php_Utf 8_Fpdf - Fatal编程技术网

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

Php FPDF:欧元符号不可能。我已经尝试了所有的解决方案,php,utf-8,fpdf,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-

首先,我知道这个问题在这里问了很多问题,但我已经尝试了所有的解决方案,但仍然不起作用。我账单上的欧元符号 翻译成“?”

我试过什么

使用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\u编码和解码功能等

没什么,没什么对我有用的。我很惊讶这些解决方案中有一些对其他人有效

另一个问题也是关于特殊人物的。我有问题保存pdf文件名时,这有口音

$pdf->Output('I',$number.'-'.$client.'.pdf');
windows使用“Ô字符保存文件

我正在使用Ubuntu16.04.3 LTS和utf-8


非常感谢

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

我通常使用
$pdf>文本(5,5,'Price:'.chr(164)。'5,00')

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

但只有在使用(生成)的字体文件中嵌入欧元符号时,它才起作用

而开箱即用的“verdana或arial”则并非如此。 因此,查找一个漂亮的.TTF字体文件(比如opensans.TTF)并使用
生成所需的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

完成。

我成功地混合了各种工艺:

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\\()"));
}

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

参见ISO 8859-1,它早于欧元。请尝试ISO 8859-15。