为了账号安全,请及时绑定邮箱和手机立即绑定

FPDF utf-8编码(HOW-TO)

/ 猿问

FPDF utf-8编码(HOW-TO)

FPDF utf-8编码(HOW-TO)

有谁知道如何将FPDF包中的编码设置为utf-8?或者至少支持希腊字符的ISO-8859-7(希腊语)?

基本上我想创建一个包含希腊字符的pdf文件。

任何建议都会有帮助。乔治


查看完整描述

3 回答

?
忽然笑

不要使用UTF-8编码。标准FPDF字体使用ISO-8859-1或Windows-1252。可以通过以下方式执行到ISO-8859-1的转换utf8_decode(): $str = utf8_decode($str); 但是某些字符(如Euro)将无法正确转换。如果iconv扩展名可用,正确的方法如下: $str = iconv('UTF-8', 'windows-1252', $str);


查看完整回答
反对 回复 2019-08-27
?
精慕HU

还有一个名为tFPDF的官方UTF-8版本的FPDF http://www.fpdf.org/en/script/script92.php

您可以轻松地从原始FPDF切换,只需确保您也使用unicode字体,如上面链接或我的代码中的示例所示:

<?php//this is a UTF-8 file, we won't need any encode/decode/iconv workarounds//define the path to the .ttf files you want to usedefine('FPDF_FONTPATH',"../fonts/");require('tfpdf.php');$pdf = new tFPDF();$pdf->AddPage();// Add Unicode fonts (.ttf files)$fontName = 'Helvetica';$pdf->AddFont($fontName,'','HelveticaNeue LightCond.ttf',true);$pdf->AddFont($fontName,'B','HelveticaNeue MediumCond.ttf',true);//now use the Unicode font in bold$pdf->SetFont($fontName,'B',12);//anything else is identical to the old FPDF, just use Write(),Cell(),MultiCell()... //without any encoding trouble$pdf->Cell(100,20, "Some UTF-8 String");//...?>

我认为使用它更优雅而不是在任何地方使用utf8_decode(),并且在AddFont()中直接使用.ttf文件的能力也是一个好处。

这里的任何其他答案只是避免或解决问题的一种方法,并且避免使用UTF-8不是最新项目的真正选择。

还有像mPDF或TCPDF(和其他)这样的替代品,它们基于FPDF但提供高级功能,具有UTF-8支持并且可以解释HTML代码(当然有限,因为没有直接的方法将HTML转换为PDF)。大多数FPDF代码可以直接在这些库中使用,因此很容易迁移代码。

https://github.com/mpdf/mpdf http://www.tcpdf.org/


查看完整回答
反对 回复 2019-08-27
?
胡子哥哥

这个问题有一个非常简单的解决方案。

在文件fpdf.php中,转到说:

if($txt!==''){

这是我的fpdf版本中的第648行。插入以下代码行:

$txt = iconv('utf-8', 'cp1252', $txt);

(在代码行之上)

if($align=='R')

这适用于所有德国特殊字符,也适用于希腊特殊字符。否则,只需将cp1252替换为您需要的相应字母。您可以在此处查看所有受支持的字符:http://en.wikipedia.org/wiki/Windows-1252

我在这里看到了解决方案:http://fudforum.org/forum/index.php?t = msg&goto = 167345 请使用上面的示例代码,因为原作者忘记在utf和8之间插入一个破折号。

希望以上是有帮助的。

大安


查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 299 浏览
我要回答

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信