J'ai besoin d'aide pour essayer de faire un colspan sur ce projet de table PDF que j'ai. Ici, sur cet exemple de code, je peux expliquer ce que j'essaie de faire. Je dois faire les lignes avec "Primary Info" et "Secondary Info" pour faire un "colspan". J'essaye également de faire la ligne de totaux pour s'étirer (colspan) au-dessus de la table pour créer une ligne pour diviser les sections sur cette table. Peut-être que je pourrais passer une image pour simuler le colspan, mais je ne peux pas comprendre comment passer le code de l'image à travers la chaîne de données. J'ai regardé partout et je ne trouve pas de solution pour cela, peut-être que quelqu'un ici a déjà fait ça et pourrait me montrer comment je peux le faire. Voici l'exemple de code et merci pour l'aide à l'avance!Colspan en PDF :: Table
#!/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();
http://www.perlmonks.org/?node_id=1005755 – toolic