#!/usr/bin/perl use warnings; use strict; use PDF::API2; use PDF::Table; use Data::Dumper; my $pdftable = new PDF::Table; my $pdf = new PDF::API2(-file => "report.pdf"); my $page = $pdf->page(); $pdf->mediabox('A4'); # some data to layout my $some_data =[ ['Name', 'Address', 'Account', 'Amount',], ['','','','',], ['Primary Info','','','',], ['','','','',], ['1 - Charles Dawrwin', '1 - Boston, MA', '1 - 123456789', '150.00'], ['2 - Arnold Shuwerts', '2 - San Rose, CA', '2 - 844756485' , '250.00'], ['3 - Joe Doe', '3 - Revere, MA', '3 - 000034559', '100.00'], ['4 - Mary Loo', '4 - New York, NY', '4 - 333449687', '125.00'], ['','','','',], ['','','','___________',], ['','Primary Sub Total','','550.00',], ['','','','',], ['1a - Mary Dawrwin', '1a - Cambrigde, MA', '1a - 123452789', '550.00'], ['2a - Joe Doark', '2a - Miami, FL', '2a - 844726485' , '350.00'], ['','','','',], ['Secondary Info','','','',], ['','','','',], ['5 - John Dell', '5 - Portland, ME', '5 - 111000384', '55.00'], ['6 - Mary Loumain', '6 - Cambridge, MA','6 - 000034569','1,000.00'], ['7 - Charles Town', '7 - New Port, NH', '7 - 222299944', '200.00'], ['8 - Jasmin Deen', '8 - San Jose, CL', '8 - 000000122', '255.00'], ['','','','___________',], ['','','Total:','$3,450.00',], ]; my $cell_props; my $j = 0; foreach my $row ( @{$some_data} ) { my $k = 0; foreach my $cell ( @{$row} ) { if ( ($cell eq 'Name') || ( $cell eq 'Address') || ( $cell eq 'Account') || ( $cell eq 'Amount') ) { $cell_props->[$j]->[$k] ={ background_color => '#808080', # font_color => '#FF0000', # justify => "center", }; }elsif ( ($cell eq 'Primary Info') || ($cell eq 'Secondary Info') ){ $cell_props->[$j]->[$k] = { font => $pdf->corefont("Helvetica", -encoding => "utf8"), font_size => 15, background_color => '#FFCA00', # font_color => '#4D4D4D', # justify => "left", }; }elsif ( ($cell eq 'Total:') ){ $cell_props->[$j]->[$k] = { background_color => '#FFCA00', # font_color => '#4D4D4D', # justify => "center", }; }else { $cell_props->[$j]->[$k] = { font => $pdf->corefont("Helvetica", -encoding => "utf8"), font_size => 8, background_color => '#ffffff', # font_color => '#000000', # justify => "center", }; } $k++; } $j++; } # build the table layout $pdftable->table( # required params $pdf, $page, $some_data, # 2D arrayref of text strings x => 50, #left_edge_of_table, -w => 495, # width of table. technically optional, but almost always a good idea to use start_y => 820, # baseline_of_first_line_on_first_page, next_y => 800, # baseline_of_first_line_on_succeeding_pages, -start_h => 800, # height_on_first_page, next_h => 500, # height_on_succeeding_pages, # some optional params -padding => 3, # cell padding padding_right => 10, #right cell padding, overides -pad border => 0, # border width 0 for no border background_color_odd => '', background_color_even => '', #cell background color for even rows header_props => { min_w => 250, bg_color => "#808080", font => $pdf->corefont("Helvetica", -encoding => "utf8"), font_size => 13, font_color => "#000000", repeat => 1, }, column_props => [ map{{justify => 'center' }}1..4, ], cell_props => $cell_props, ); $pdf->saveas();