Barra laterale

programmazione:perl:creazione_pdf

Creazione di pdf in Perl

Autore: Fabio Di Matteo
Ultima revisione: 05/02/2015 - 10:41

Grazie a PDF::API2 e 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 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')};

programmazione/perl/creazione_pdf.txt · Ultima modifica: 18/04/2018 - 15:49 (modifica esterna)