PDF::创建错误地转换法语重音字符



我的Perl程序可以使用PDF::create模块成功地将英文文本转换为pdf。 但是,法语重音字符在 PDF 文件中无法正确显示。

以下是纯文本文件中包含法语字符的一行:

正式

权利声明

以下是 PDF 文件中同一行的外观:

VÉRIFIER DÉCLARATION DE DROITS-FORMITÉS

以下是相关代码:

$page = $pdf->new_page('MediaBox' => [0,0,$pdfWidth,$pdfHeight]);
$font1 = $pdf->font('Subtype'=>'Type1',Encoding'=>'WinAnsiEncoding','BaseFont'=>'Courier');
$page->string($font1, $fontSize, $leftMarg, $yCoord, $pdfLine);

其中$pdfLine包含纯文本。

程序在包含以下内容的文件中读取:

azAZàäçèéê

ÉTAT DES DEMANDES INACTIVES - OPÉRATION DES BREVETS

塔切

正式

权利声明

VÉRIFIER LISTAGE DES SÉQUENCE-FORMALITÉS

我的猜测是$pdfLine是UTF-8编码的。在将其写入 PDF 之前,您可能希望将其解码为 unicode 代码点。

use Encode 'decode';
$page->string($font1, $fontSize, $leftMarg, $yCoord, decode("UTF-8",$pdfLine));

您还可以使用编码层在输入文件句柄处处理解码:

open my $fh, '<:encoding(UTF-8)', "file/that/contains/the/plain.txt";
...
$pdfLine = <$fh>;
...
$page->string($font1, $fontSize, $leftMarg, $yCoord, $pdfLine);

我通过安装旧版本的PDF::Create来解决问题。 我运行的是 1.42 版,我安装了 1.31 版。 法语重音字符在 1.31 版时显示正常。 因此,在 1.31 到 1.42 之间的某个地方,重音字符的转换被破坏了。

最新更新