FPDF:俄语文本输出不正确

时间:2016-01-23 08:46:26

标签: php pdf fpdf

在我的PHP项目中,我有一个PDF,我想输出俄文文本:

Это предложение на русском языке.

在我的MySQL数据库中,我有一个表格,其中包含utf8_unicode_ci的俄语数据。在此表中,俄语数据以无法识别的字符表示,如下所示:

Я дейÑтвую Ñкорее доверительно Ð

在我的pdf上,不是相应的Cyrllic输出,而是这些无法识别的字符。

以下是我的FPDF代码的摘录,请注意输出有问题的变量$myRussianSentence

$pdf=new FPDF();
$pdf->SetAutoPageBreak(false, 0);
$pdf->AddPage();
$pdf->SetTitle('My Title');
$pdf->SetAuthor('John Miller');
$pdf->SetLeftMargin(18);
$pdf->SetFont('times', 'B', 36);
$pdf->SetTextColor(0,0,0);
$pdf->Cell(174, 45, 'MY PDF', "", 1, "C");
$pdf->Ln(5);
$pdf->Image($strAdDeckLink, $x = 40, $y = 60, $w = 131, $h = 129, $type = '', $link = 'http://www.example.com', $align = '', $resize = false, $dpi = 96, $palign = '', $border = 0);
$pdf->Ln(130);
$pdf->SetFont('times', 'B', 24);
$pdf->Cell(174, 26, 'This is some text', "", 1, "C");
$pdf->Ln(5);
$pdf->SetFont('times', 'B', 32);
$pdf->Cell(180, 26, $myRussianSentence, "", 1, "C");

对变量var_export()执行$myRussianSentence会在适当的Cyrllic字符中显示该句子。但是,在PDF上,它将作为无法识别的字符输出,如我的数据库中所示。

如何在我的PDF上显示正确的俄语?

1 个答案:

答案 0 :(得分:3)

FPDF上说:

  

该类可以生成除西欧以外的多种语言的文档:中欧,西里尔,希腊,波罗的海和泰语,前提是您拥有所需字符集的TrueType或Type1字体。 UTF-8 support也可用。

tFPDF 是指具有UTF-8支持的版本:

  

此类是FPDF的修改版本,可添加UTF-8支持。

代码看起来非常相似:

require('tfpdf.php');
$pdf = new tFPDF();

您需要使用Unicode字体:

  

要在脚本中使用Unicode字体,请将字体文件名作为AddFont()的第三个参数传递,将true作为第四个参数传递。字体可以位于font / unifont目录中,也可以直接位于系统字体文件夹中(如果定义了_SYSTEM_TTFONTS常量)。该软件包附带DejaVu字体系列。

// Add a Unicode font (uses UTF-8)
$pdf->AddFont('DejaVu','','DejaVuSansCondensed.ttf',true);
$pdf->SetFont('DejaVu','',14);

FPDF的其他几个扩展提供了UTF-8支持: