필자는이 PDF 표 프로젝트에서 colspan을 수행하는 데 도움이 필요합니다. 여기이 샘플 코드에서 내가하려고하는 것을 설명 할 수 있습니다. "colspan"을 수행하려면 "기본 정보"및 "보조 정보"가있는 행을 만들어야합니다. 나는 또한이 테이블의 섹션을 나누는 선을 만들기 위해 테이블 위로 스트레칭 (colspan) 할 합계 "선"을 만들려고합니다. 어쩌면 이미지를 전달하여 colspan을 시뮬레이트 할 수는 있지만 데이터 문자열을 통해 이미지 코드를 전달하는 방법을 알 수는 없습니다. 나는 도처에 보였고 나는 그것에 대한 해결책을 찾을 수 없다. 어쩌면 여기 누군가가 전에 이것을했기 때문에 나는 그가 어떻게 끝낼 수 있는지 보여줄 수 있었다. 샘플 코드와 도움에 미리 감사드립니다!PDF의 Colspan :: 표
#!/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