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
答案 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之间,重音字符的转换被打破了。