utiliser le module perl PDF::API2 avec les caractère accentués ou les € ça marche pas sans le support UTF-8
j’ai écrit une petite fonction qui corrige le pb « HeX » en convertissant les caractères accentués en leur équivalent en hexadecimal.
#!/usr/bin/perl
use PDF::API2; # module creation pdf
my $file ="fichierpdf.pdf";
$pdf = PDF::API2->new;
#Définition des fonts disponibles hors taille
$ft = $pdf->corefont('Verdana');
#Création de la page A4
my $page = $pdf->page;
$page->mediabox('A4');
$gfx = $page->gfx;
$txt=HeX ('ééèèèèèêêêêêàààçççç&&&&');
$gfx->textlabel(40,730,$txt);
#Sauvegarde du fichier PDF
$pdf->saveas($file);
$pdf->end;
#Fonction de conversion des caractères accentuées en hexadecimal pour le module PDF::API
sub HeX {
# From http://www.kostis.net/charsets/adobeiso.htm
# l'euro peut être codé en hex \x80 ou en .chr(128)
my $string=shift;
my %iso=( 'é' => '\xE9',
'&' => '\x26',
'à' => '\xE0',
'ç' => '\xE7',
'è' => '\xE8',
'ê' => '\xEA',
'€' => '\x80',
);
foreach my $k (keys(%iso)) {
$pattern = "s/$k/$iso{$k}/g";
eval "\$string =~ $pattern";
}
return $string;
}
Voila, il manque bien sur plein de caractère mais c’est facile a ajouter en fonction de ses besoins , il faut aller sur http://www.kostis.net/charsets/adobeiso.htm, colonne HEX et mettre \x…. dans l’Array %iso.
Si vous activez l’utf8 avec use uft8; il n’y a plus besoin de tout cela – mais dans certain cas cela n’est pas possible.
Attention votre fichier txt avec le code source doit être crée en uft8 (voir les options de vim ) – pour moi l’utilisation de vieux codes sources nécessite une conversion ou un copie/collé dans un doc tout neuf.