2017-12-27 8 views
-2

私は PDF::API2モジュールを使用してPDFファイルを生成するためにPerlを使用しています。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(); 

だが、私はそれがこのように表示されるようにしたい:私は@tblデータへの変更をしなければなら知っている

It should be formatted like this

を、しかしどのように?

答えて

-1

PDF::Tabletable関数は、3番目の引数として「配列」をとります。各ネストされた配列は、([]括弧内のものだ)テーブルの新しい行で、その配列に要素がその行のセルである

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

:あなたは、現在、それは次のようにstrucutred持っています。ので、代わりに、あなたはそれが構造化したい:

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

関連する問題