Stefan Muenz: Problem mit HTML-Formular und pdf-lib

Beitrag lesen

Liebe Forumer,

heute mal ein Problem meinerseits. Es geht darum, mit einem CGI-Script dynamisch ein PDF-Dokument zu generieren, wobei bestimmte einzusetzende Texte aus einem HTML-Formular stammen. Zum Generieren des PDF-Dokuments wird das pdflib-Modul verwendet (http://www.pdflib.com/). Das Modul ist korrekt installiert, ein PDF-File wird erzeugt. Bei installiertem Adobe-Acrobat-Viewer zeigt der Browser die erzeugte PDF-Datei an. Funktioniert alles so weit - nur beim IE 6.0 gibt es ein Problem.

Zunaechst der Code des HTML-Formulars (trivial):

<form action="/cgi-local/pdftest.pl" target="_blank" method="post">
Einen Text eingeben: <input type="text" name="eingabe" size="40">
<input type="submit" value="absenden">
</form>

Und jetzt der Code des CGI-Scripts:

use strict;
use CGI;
my $cgi = new CGI;
use CGI::Carp qw(fatalsToBrowser);
my $inputtext = $cgi->param('eingabe');
use pdflib_pl 4.0;
my $p = PDF_new();
die "Couldn't open PDF file" if (PDF_open_file($p, "../pdftest/hello.pdf") == -1);
PDF_begin_page($p, 595, 842);
my $font = PDF_findfont($p, "Helvetica-Bold", "host", 0);
PDF_setfont($p, $font, 18.0);
PDF_set_text_pos($p, 50, 700);
PDF_show($p, $inputtext);    # <--- hier gibts Probleme!
PDF_continue_text($p, "(says Perl)");
PDF_end_page($p);
PDF_close($p);
PDF_delete($p);
print "Location: /pdftest/hello.pdf\n\n";

Das Problem ist, dass die Variable $inputtext beim Internet Explorer 6.0 nicht ausgegeben wird. Bei anderen getesteten Browsern (Netscape 6.1, 4.7 und IE 5.0) dagegen sehr wohl. Ebenfalls ausgegeben wird die Variable - auch in IE 6, wenn man sie mit einem statischen Text initialisiert, also etwa:
my $inputtext = "bla bla";
statt:
my $inputtext = $cgi->param('eingabe');
Das Komische ist ja, dass nicht mal der Browser fuer die Ausgabe zustaendig ist - er ruft ja nur den Acrobat-Viewer auf.

Die Frage ist also, ob da irgendetwas perl-seitig zu machen ist - oder anders gefragt: warum macht es offensichtlich einen Unterschied, ob der Inhalt der Variablen $inputtext mit statischem Text initialisiert wird, oder ob er durch Zuweisen von $cgi->param('eingabe') initialisiert wird?

Falls jemand von euch Erfahrung mit pdflib und Perl und CGI hat, vielleicht faellt da ja jemandem was ein ... ;-)

viele Gruesse
  Stefan Muenz