PDFs erstellen mit Perl

7. September 2008 · Programmierung · andreas · 2 Kommentare

Will man aus Perl PDFs erstellen, so gibt es das vorzügliche PDF::API2-Modul, das aber einen entscheidenden Nachteil hat: man wird von Optionen und Möglichkeiten dermaßen erschlagen, daß es schwer ist, überhaupt am Ziel anzukommen.

Als einfachen Ausweg gibt es das Modul PDF::API2::SIMPLE, ein “simplistic wrapper for the excellent PDF::API2 modules”, mit dem man sich auf’s Wesentliche konzentrieren kann.

Leider kann das Modul in seiner aktuellen Version (1.1.4) Bilder nur aus Dateien (JPG, TIFF, PNM, PNG oder GIF, die im Dateisystem vorliegen müssen) einbinden, ein extrem umständlicher Weg, falls diese z.B. in einer Datenbank vorliegen.

Eine entsprechende Erweiterung ist aber schnell - und einfach - gemacht, verhält sich analog zur ursprünglichen image-Methode und kann mit einem GD-Objekt genutzt werden:

sub gdimage {

    my ($self, $src, %opts) = @_;
    my $x = $opts{'x'} || $self->x;
    my $y = $opts{'y'} || $self->y;
    my $width = $opts{'width'} || 100;
    my $height = $opts{'height'} || 100;
    my $scale = $opts{'scale'} || 1;
    my $image = $self->current_page->gfx;

    my $data = $self->pdf->image_gd($src);

    $image->image($data, $x, $y, $width, $height);

    $self->x( $x + $width );
    $self->y( $y );
}

Der Erweiterungsvorschlag ist auch an die Entwickler raus, vielleicht wird er ja integriert …