【问题标题】:Fpdf and special charactersFpdf 和特殊字符
【发布时间】:2012-05-16 20:18:22
【问题描述】:

我正在尝试用内置字体写出一些特殊字符,有什么办法吗?

$str = 'ščťžýáíéäúň§ôúőűáéóüöűú'; $str = iconv('UTF-8', 'windows-1252', $str);

结果是一个字母Š,不太好。 :)

【问题讨论】:

  • 你试过mb_convert_encoding吗?
  • 什么都没有,试过 $str = mb_convert_encoding($str, 'iso-8859-2', 'UTF-8') 但字符还是不行 ¹è»¾ýáíéäúòôúõûáéóüöûú

标签: php character-encoding fpdf


【解决方案1】:

我知道这是一个旧线程,但我在这个周末遇到了这个问题并且花了很长时间谷歌搜索和玩,所以这里可以节省时间。 http://fpdf.org/en/script/script92.php 是使用变音符号(重音字符)的方法。但是你需要向它添加一些代码...... 将其插入第 617 行

 /* Modified by Vinod Patidar due to font key does not match in dejavu bold.*/
    if ( $family == 'dejavu' && !empty($style) && ($style == 'B' || $style == 'b') ) {
        $fontkey = $family.' '.strtolower($style);
    } else {
        $fontkey = $family.$style;  
    }
    /* Modified end here*/

然后改变

if($family=='arial')
        $family = 'helvetica';

 if($family=='arial'||$family='dejavu')
        $family = 'helvetica';

那么不要使用示例“DejaVu Sans Condensed”中的字体,因为 Condensed 似乎意味着 Bold 版本不包含所有字符

您可能还需要从普通 fpdf.php 脚本中添加 getPageWidth 和 getPageHeight 方法,因为它比 tfpdf.php 更新!

以上改动

$pdflabel->AddFont('DejaVu','','DejaVuSans.ttf',true);  
$pdf->AddFont('DejaVu','B','DejaVuSans-Bold.ttf',true);

与欧洲语言配合得很好

【讨论】:

    【解决方案2】:

    您需要使用 FPDF 的 tFPDF 衍生物。 tFPDF 使用 PHP 多字节字符串函数并生成使用 UTF-8 编码的输出。 FPDF 没有。您还需要使用支持您要使用的所有 Unicode 字符的字体。最常见的是,我将使用 Arial。

    见:http://fpdf.org/en/script/script92.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 2014-05-04
      • 2012-09-24
      • 2011-05-17
      相关资源
      最近更新 更多