2017-12-27 53 views
-2

我正在使用Perl來生成帶有 PDF::API2模塊的PDF文件。重新排列PDF文件中的數據

我很難以所需的格式將數據寫入文件。

目前,這是它如何出現在PDF文件中。

Currently looks like this in PDF

這裏是我的腳本

my %data = (
    '1' => { 
     'SEQUENCE' => '1', 
     'NAME'  => 'John', 
     'ADDR1' => 'Road 1', 
     'GRADE' => '5' 
    }, 
    '2' => { 
     'SEQUENCE' => '2', 
     'NAME'  => 'Smith', 
     'ADDR1' => 'Road 2', 
     'GRADE' => '6' 
    } 
); 

... 
... 

my @rows = qw(NAME ADDR1 GRADE); 

for my $id (sort keys %data){ 
    push @tbl, [ @{$data{$id}}{@rows} ]; 
    ($name, $addr, $grade) = ($data{$id}{'NAME'}, $data{$id}{'ADDR1'}, $data{$id}{'GRADE'}); 
} 

... 
... 

my $pdftable = new PDF::Table; 
$pdftable->table(
    $pdf, 
    $page, 
    \@tbl, 
    x => 50, 
    w => 400, 
    start_y => 630, 
    start_h => 630, 
    next_y => 630, 
    next_h => 630, 
    padding => 5, 
    border => 1, 
    padding_right => 10, 
); 
$pdf->saveas(); 

但我希望它出現這樣的:

It should be formatted like this

我知道我必須做出修改@tbl數據,但是如何?

回答

-1

PDF::Tabletable函數採用一個「陣列或多個陣列」作爲它的第三個參數。您目前有它strucutred這樣的:

my @tbl = ([$name,$addr,$grade], [...]) 

每個嵌套數組(什麼是[]括號內)是表的新行,和元素數組是行的單元格。因此,相反,你想讓它的結構:

my @tbl = (['NAME',$name], ['ADDR1',$addr], ['GRADE',$grade], [...]) 

要使用您的%data結構,它構造:

for my $id (sort keys %data) { 
    push @tbl, [$_, $data{$id}->{$_}] for qw/NAME ADDR1 GRADE/; 
    push @tbl, [qw/- -/]; # to add a blank row as a separator 
} 
+0

謝謝@beasy。 如何打印在不同的表中的數據,而在同一個表中顯示它與分離了 - - 。 – vinodk89

+0

在每個循環中創建一個新的「PDF :: Table」 – beasy