Retourner aux forums || Retourner au forum Astuces.divers
Astuces.divers : [Perl] Modifier un PDF avec PERL
Posté par Gérard Verdier () le 01 juin 2006> Lire le message (3 commentaires, moyenne: 1,3).
bouh
justement, ton astuce est aussi lisible qu'un script perl...
le python, c'est bon
Plus lisible !
Intéressant, mais semble y avoir eu un léger problème de mise en page entre le moment où tu as écrit ton astuce et son arrivée dans la rubrique astuce, non ?
Je pense que le résultat aurait dû ressembler à ça :
Dernièrement, j'ai eu besoin de modifier un grand nombre de documents PDF, en ajoutant un en-tête et un numéro de page sur chaque page.
J'ai pu réaliser cette opération rapidement en utilisant Perl et le module PDF::API2.
Voici une version "light" du script Perl que j'ai utilisé :
#!/usr/bin/perl
use PDF::API2;
my $file=shift;
my $out_file=shift||"test.pdf";
my $page_cnt=shift||1;
my $pdf = PDF::API2->open($file);
my $f1=$pdf->corefont('Times-Roman',-encode => "latin1");
my $f2=$pdf->corefont('Times-Italic',-encode => "latin1");
for my $p (1..$pdf->pages()){
my $page=$pdf->openpage($p);
$page->add_font($f1);
$page->add_font($f2);
my $gfx = $page->gfx;
$gfx->save; $gfx->fillcolor('black');
$gfx->textstart;
# Ajout du numéro de page centré en bas
$gfx->font($f1,10);
$gfx->translate(297.5,30);
$gfx->text_center("$page_cnt");
# Ajout de l'entete en haut à droite
$gfx->font($f2,10);
$gfx->translate(570,812);
$gfx->text_right("Texte placé en haut à droite");
$gfx->textend;
$gfx->restore;
$page_cnt++;
}
$pdf->saveas($out_file);
exit;
Vous pouvez aussi placer dans la boucle les instructions suivantes pour afficher en arriere plan de chaques page le mot "TOP-SECRET" en rouge et en diagonal :
my $gfx2 = $page->gfx(1);
$gfx2->save;
$gfx2->fillcolor('red');
$gfx2->translate(297.5,420);
$gfx2->rotate(30);
$gfx2->font($f1,80);
$gfx2->text_center("TOP SECRET");
$gfx2->textend;
$gfx2->restore;
(c'est le (1) de l'appel de $page->gfx(1) qui permet la mise en arrière plan de texte)
Pour finir un dernier exemple qui permet d'ajouter un logo (logo.jpg) en haut à gauche sur toutes les pages :
#!/usr/bin/perl
use PDF::API2;
my $file = shift;
my $out_file = shift||"test.pdf";
my $pdf = PDF::API2->open($file);
my $nb_pages = $pdf->pages();
my $img = $pdf->image_jpeg('logo.jpg');
for my $p (1..$nb_pages){
my $page=$pdf->openpage($p);
my $gfx = $page->gfx(1);
$gfx->save;
$gfx->image($img,40,790,0.4); # 0.4 est le facteur d'echelle
$gfx->restore;
}
$pdf->saveas($out_file);
P.S.: Si PDF::API2 n'est pas déja installé sur votre système, vous pouvez utiliser la commande : perl -MCPAN -e "install PDF::API2" pour l'installer.
Berlin 1936, Moscou 1980, Pékin 2008.
Jeux Olympiques, sponsor officiel de la dictature.
Mexico 1968, Pékin 2008.
Jeux Olympiques, sponsor officiel de la répression.
Revenir en haut de page || Retourner aux forums || Retourner au forum Astuces.divers



Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.