2017-12-27 23 views
-2

Ich verwende Perl, um eine PDF-Datei mit dem PDF::API2 Modul zu erzeugen.Daten in einer PDF-Datei neu anordnen

Ich habe Schwierigkeiten beim Schreiben von Daten in die Datei im erforderlichen Format.

Momentan erscheint dies in der PDF-Datei.

Currently looks like this in PDF

mein Skript hier

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(); 

Aber ich will es so erscheinen:

It should be formatted like this

Ich weiß, dass ich eine Änderung @tbl Daten vornehmen müssen, aber wie?

Antwort

-1

Die PDF::Tabletable Funktion nimmt ein "Array oder Arrays" als drittes Argument. Sie haben zur Zeit es strucutred wie:

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

Jede verschachtelte Array (was in den [] Klammern ist) eine neue Zeile der Tabelle ist, und die Elemente dieses Arrays sind die Zellen dieser Zeile. Anstatt also, wollen Sie es strukturiert:

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

zu konstruieren, es Ihre %data Struktur mit:

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

Danke @beasy. Wie kann ich Daten in verschiedenen Tabellen drucken, anstatt es in der gleichen Tabelle anzuzeigen, die es mit - - trennt. – vinodk89

+0

Erstellen Sie eine neue 'PDF :: Tabelle' in jeder Schleife – beasy