我的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 之间的某个地方,重音字符的转换被破坏了。