Hi Monks!
I need some help on trying to do a colspan on this PDF table project I have. Here on this sample code
I can explain what I am tring to do. I need to make the rows with "Primary Info" and "Secondary Info" to
do a "colspan". I am also trying to make the totals "line" to stretch (colspan) over the table to create
a line to divide the sections on this table. Maybe I could pass an image to simulate the colspan, but can't figure it out how to pass the image code through the data string. I looked everywhere and I can't find any solutions for it, maybe someone here did
this before and could show me how I can get his done.
Here is the sample code and thanks for the help in advance!
#!/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 - 12345278
+9', '550.00'],
['2a - Joe Doark', '2a - Miami, FL', '2a - 84472648
+5' , '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 Inf
+o') ){
$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();
Thanks again!
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.