[erlug] PDF Dokument-Generierung mit Perl
- From: Wolfgang Kinkeldei <wolfgang@xxxxxxxxxxxx>
- To: erlug@xxxxxxxxxxxxx
- Date: Thu, 6 Dec 2007 08:53:26 +0100
Moin zusammen,
mit Guido hatte ich mich gestern über die Erstellung von PDF
Dokumenten unterhalten und dabei eine bei uns in der Firma häufig
praktizierte Methode erwähnt. Vielleicht ist dieses Verfahren auch
für andere in der Liste von Interesse, daher schreibe ich mal in die
Liste :-)
Man nehme:
- Perl
- die Bibliothek PDF::API2
- ein Muster-PDF als Vorlage
und fülle das PDF dann mit beliebigen Daten aus. Das kann dann in
etwa so aussehen:
#!/usr/bin/perl
use strict;
use warnings;
use PDF::API2;
# Vorlage lesen
my $srcpdf = PDF::API2->open('vorlage.pdf');
delete $srcpdf->{forcecompress};
my $font = $srcpdf->corefont('Helvetica',1);
# neues PDF erstellen
my $pdf = PDF::API2->new;
my $font = $pdf->corefont('Helvetica',1);
# erste Seite von Vorlage kopieren
my $page=$pdf->importpage($srcpdf,1,0);
$page->mediabox(595,842);
my $txt = $page->text;
$txt->compress;
$txt->font($font, 14);
# Eintragen eines Textes in das PDF
$txt->translate(200,665);
$txt->text('Dieser Text soll hier rein');
# PDF ausgeben (in diesem Fall: STDOUT)
print $pdf->stringify();
$pdf->end();
...zugegebenermaßen auf den ersten Blick ein wenig erschreckend, doch
fast der gesamte Code ist immer mehr oder weniger konstant, lediglich
die Text-Eintragungen werden je nach Job variabel gemacht und damit
sind beliebig komplexe Befüllungen fast ein Kinderspiel...
use Perl ;-)
Grüße,
Wolfgang
--
' /\_/\ ' .print[split??,"".(($/=q|Cms)+-03467:;<=|)=~tr!C-z -B! -z!)x
'( o.o )' .$/]->[hex]foreach split qr<>,qq+1ecd039ad65b025b8063475b+||
' > ^ < ' .q<!-- Wolfgang Kinkeldei - mailto:wolfgang@xxxxxxxxxxxx -->
- Follow-Ups:
- [erlug] Re: PDF Dokument-Generierung mit Perl
- From: Andreas Schott
Other related posts:
- » [erlug] PDF Dokument-Generierung mit Perl
- » [erlug] Re: PDF Dokument-Generierung mit Perl
- » [erlug] Re: PDF Dokument-Generierung mit Perl
- [erlug] Re: PDF Dokument-Generierung mit Perl
- From: Andreas Schott