2010-01-18T18:15:21 pqfunktioniert PDF::Table nicht?
ich benutze das; ist nicht perfekt, nimmt einem aber einiges an arbeit ab.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
#!/usr/bin/perl -w use strict; use warnings; use PDF::API2; use PDF::Table; my $pdftable = new PDF::Table; my $pdf = new PDF::API2(-file => "testpdf.pdf"); my $page = $pdf->page; my $some_data =[ ["1 Lorem ipsum dolor","Donec odio neque, faucibus vel","consequat quis, tincidunt vel, felis."], ["Nulla euismod sem eget neque.","Donec odio neque","Sed eu velit."], ["testzeile 3"], ["testzeile 4"], ]; $pdftable->table( $pdf, $page, $some_data, x => 10, w => 490, start_y => 750, next_y => 700, start_h => 300, next_h => 500, border_color => 'red', ); $pdf->saveas();
2010-01-19T15:06:34 pqvermutlich, weil zeile 3 und 4 jeweils nur eine spalte haben anstatt 3 spalten (wie die ersten beiden zeilen).
2010-01-21T10:49:23 pqZitat aus PDF::API2::HOWTO:
2010-01-21T15:17:13 pqkeine ahnung, vielleicht gibts ne funktion dafür, aber ich speicher mir die seiten in ein array, um später sowas wie "Seite x/y" hinzuzufügen.
1 2 3 4 5 6 7 8
... { push @pages, $current_page; } # spaeter for my $i (0 .. $#pages) { # "Seite $i/$#pages" hinzufügen }
2010-01-21T15:41:13 pqich erzeuge die einzelnen seiten und speichere sie zusätzlich in ein array.
2010-01-21T15:59:42 pqhab ich nie gebraucht. das skript, in dem ich PDF::Table benutze, ist ein anderes als das, in dem ich die seitenzahlen brauche. in letzterem erzeuge ich selbst jede seite.
2010-01-21T15:59:42 pqübrigens, bevor eventuell die nächste frage kommt, wie du textblöcke formatierst (meine glaskugel sagt mir das voraus): PDF::TextBlock
2010-01-21T16:08:26 biancaIm übrigen kann PDF::Table das selbst über text_block() :)
1 2 3 4
for my $pagenum ( 1 .. $pdf->pages ) { my $page = $pdf->openpage( $pagenum ); # mach was mit $page }
2010-01-21T18:59:24 reneeDas müsste text_right sein. Schau Dir auch mal http://rick.measham.id.au/pdf-api2/ an.
1 2 3 4
my $headline_text = $page->text; $headline_text -> font ($fnt); $headline_text -> translate( 95, 131 ); $headline_text -> text_right ('Seite ' . $pagenum . ' von ' . $pdf -> pages);
Illegal division by zero at /usr/lib/perl5/site_perl/5.8.5/PDF/API2/Content.pm line 1811.
1 2 3 4 5 6 7 8 9 10 11 12
# Schleifenkopf $page = $pdf -> openpage ($pagenum); my $txt = $page -> text; @feld = $pdftable -> text_block ( $txt, 'Seite X von Y', x => 100, y => 500, w => 300, h => 200, align => 'right', );
Can't call method "width" on an undefined value at /usr/lib/perl5/site_perl/5.8.5/PDF/API2/Content.pm line 1695.
2010-01-18T18:12:42 biancaDir ist vielleicht nicht bekannt, dass PDF (als Dateiformat mit der Sprache PostScript) nicht mit Koordinaten in Pixel rechnet, sondern in DTP-Punkt (=1/72", »PostScript Point«). ;)Ermitteln kann ich - ausgehend von den auszugebenden Zeichen - die Gesamtbreite in Pixeln für diesen Text.
Weiterhin weiß ich die Gesamtbreite des Blattes in Pixeln.
2010-01-19T17:03:58 GwenDragonDir ist vielleicht nicht bekannt, dass PDF (als Dateiformat mit der Sprache PostScript) nicht mit Koordinaten in Pixel rechnet, sondern in DTP-Punkt (=1/72", »PostScript Point«). ;)
Falls es da Missverständnisse gibt.