====== Creazione di pdf in Perl ====== Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//05/02/2015 - 10:41//** \\ \\ Grazie a [[http://search.cpan.org/~ssimms/PDF-API2-2.023/lib/PDF/API2.pm|PDF::API2]] e [[http://search.cpan.org/~omega/PDF-Table-0.9.7/lib/PDF/Table.pm|PDF::Table]] vedremo come creare un semplice pdf contenente testo, immagini e tabelle. ===== Installazione ===== Installazione di PDF::API2: perl -MCPAN -e "install PDF::API2 Se vogliamo anche il supporto alle tabelle sara' necessario installare anche [[http://search.cpan.org/~omega/PDF-Table-0.9.7/lib/PDF/Table.pm |PDF::Table]] che vedremo in seguito come utilizzarlo. perl -MCPAN -e "install PDF::Table ===== Hello world ===== Creazione di un semplice pdf con del testo e un'immagine. #!/usr/bin/perl # Installazione PDF::API2 #sudo perl -MCPAN -e "install PDF::API2" #Documentazione: #http://search.cpan.org/~ssimms/PDF-API2-2.023/lib/PDF/API2.pm use PDF::API2; use Encode; #Per la codifica utf8 del testo # Crea un nuovo pdf $pdf = PDF::API2->new(); # Aggiunge una pagina bianca $page = $pdf->page(); # Dimenzione pagina $page->mediabox('A4'); # Aggiunge un font del sistema $font = $pdf->corefont('Helvetica-Bold'); # Aggiungi del testo $text = $page->text(); $text->font($font, 20); $text->translate(2, 700); # uso decode("utf8","bla bla...") per usare la codifica del testo utf8 $text->text(decode("utf8",'Ciao mondo, saluti a volontà!')); #Aggiunge un'immagine my $gfx=$page->gfx; $mypng = $pdf->image_png('logo.png'); $gfx->image( $mypng, 30, 760 ); # Salva il PDF $pdf->saveas('documento.pdf'); #Visualizza il pdf con il programma predefinito if ($^O=='MSWin32') { system('start documento.pdf')}; if ($^O=='linux') { system('xdg-open documento.pdf')}; ===== Creazione di tabelle ===== #!/usr/bin/perl #Installazione di PDF::API2 e PDF::Table #sudo perl -MCPAN -e "install PDF::API2" #sudo perl -MCPAN -e "install PDF::Table" #Documentazione: #http://search.cpan.org/~ssimms/PDF-API2-2.023/lib/PDF/API2.pm #http://search.cpan.org/~omega/PDF-Table-0.9.7/lib/PDF/Table.pm use PDF::API2; use PDF::Table; use Encode; #Per la codifica utf8 del testo # Dati della tabella my $datiTabella =[ ["Colonna0", "Colonna1","Colonna2"], ["cella0", "cella1", "cella2"], ["cella3", "cella4", "cella5"], ["cella6", "cella7", "cella8"], #... e così via... ]; # Crea un nuovo pdf $pdf = PDF::API2->new(); # Aggiunge una pagina bianca $page = $pdf->page(); # Dimenzione pagina $page->mediabox('A4'); # Font $font = $pdf->corefont('Helvetica-Bold'); # Aggiungiamo un testo libero alla pagina $text = $page->text(); $text->font($font, 20); $text->translate(2, 700); $text->text(decode("utf8",'Tabelle a volontà')); #Formattazione intestazione tabella my $intestazioneTabella = { font => $pdf->corefont("Helvetica", -encoding => "utf8"), font_size => 18, font_color => '#004444', bg_color => 'yellow', repeat => 1, justify => 'center' }; #Se volessimo impostare le preferenze per una singola cella my $preferenzeCella = []; $preferenzeCella->[1][0] = { #Riga 2 cella 1 background_color => '#008000', font_color => '#FFFFFF', font_size => 38, }; # Creazione tabella my $pdftable = new PDF::Table; $pdftable->table( # parametri obbligatori $pdf, $page, $datiTabella, header_props => $intestazioneTabella, #preferenze intestazione cell_props => $preferenzeCella, #preferenze singola cella x => 50, w => 495, start_y => 500, start_h => 300, # opzionali next_y => 750, next_h => 500, padding => 5, padding_right => 10, border => 0 , background_color_odd => "red", #sfondo righe dispari background_color_even => "lightblue", #sfondo righe pari ); # Salva il pdf PDF $pdf->saveas('documento-con-tabella.pdf'); #Visualizza il pdf con il programma predefinito if ($^O=='MSWin32') { system('start documento-con-tabella.pdf')}; if ($^O=='linux') { system('xdg-open documento-con-tabella.pdf')};