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.
# PHP
Posté par Florian . Évalué à 1.
http://www.fpdf.org/
http://fpdi.setasign.de/
# bouh
Posté par cho7 (site web personnel) . Évalué à 2.
# Plus lisible !
Posté par Arthur Accroc . Évalué à 1.
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.
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.