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

时间:2017-11-08 16:37:22

标签: perl pdf character-encoding

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

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

  

VÉRIFIERDÉCLARATIONDEDROITS-FORMALITÉS

以下是PDF文件中的相同行:

  

V?RIFIERDÉCLARATION DE DROITS-FORMALITÉ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àâäçèéê

     

ÉTATDESDEMANDES INACTIVES - OPÉRATIONDESBREVETS

     

环节

     

VÉRIFIERDÉCLARATIONDEDROITS-FORMALITÉS

     

VÉRIFIERLESAGEDESSÉQUENCE-FORMALITÉS

2 个答案:

答案 0 :(得分:0)

我的猜测是$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);

答案 1 :(得分:0)

我通过安装旧版本的PDF :: Create解决了这个问题。我运行的是1.42版,我安装了1.31版。使用1.31版本,法语重音字符显示正常。因此,在1.31和1.42之间,重音字符的转换被打破了。