Hallo,
»» open (FILE,"4008420.pdf") die "Can't Open 4008420.pdf!\n";
Grundsätzlich nicht daneben. Wie gesagt, liegt die Datei wirklich im gleichen Verzeichnis, wie das Script?
»» open (FILE,"4008420.pdf:raw") die "Can't Open 4008420.pdf!\n";
also ":raw" habe ich im Zusammenhang mit der open-Funktion noch nicht gesehen. Wo hast Du sowas her?
»» # perldoc -f binmode; und diese löschen!!!
Schon mal gut.
Nochmals:
Du mußt _zuerst prüfen, ob Du die PDF-Datei überhaupt ausgeben kannst. Dazu genügt nicht, $nummer zu prüfen. Kannst Du die Datei überhaupt einlesen.
Eigentlich wollte ich ja keinen Code hier herstellen, aber ich denke es wird wohl besser sein:
Ich gehe jetzt davon aus, daß die PDF-Datei im Ordner "D:\Dokumente\PDF" liegt
<code>
#!/perl/bin/perl -w
use strict;
use CGI ':standard';
my $nummer = param('nummer');
my($fehler) = "";
if ($nummer == 1160) # testen ob nummer falsch
{
if(open (FILE,"D:\Dokumente\PDF\4008420.pdf")) # datei aufmachen
{
print header('application/pdf'); #erst jetzt pdf-header ausgeben
binmode FILE; # hier das ominoiese binmode
print while(<FILE>); # datei an den browser senden
close FILE; # Datei schliessen
exit; # hier koennen wir bereits aufhoeren, weil es gibt nicht mehr zu tun
}
else # wenn das oeffnen der datei nicht funktionierte
{
$fehler = "Datei konnte Nicht gelesen werden";
}
}
else # wenn die nummer falsch ist
{
$fehler = "Nummer falsch";
}
hier wird die fehlermeldung an den browser gesendet, wenn nicht ohnehin die pdf-datei gesendet wurde.
print header('text\html');
print "<html><body>$fehler</body></html>";
</code>
Das ist jetzt mal so hingeschrieben, könnte vielleicht noch dies oder das daran 'verbessert' werden, aber so sollte es zumindest funktionieren.
Noch etwas: Wenn Du jetzt einfach den Code unreflektiert hernimmst und sagst "Wunderbar, brauch ich nicht mehr weitersuchen", aber nicht verstanden hast, was in jeder Zeile passiert und warum das genau dort passiert, dann wirst Du beim nächsten script wieder auf die schnauze fallen, und beim übernächsten, und beim überübernächsten ...
Ich würde Dir empfehlen, zumindest in der Dokumentation von Perl nachszulesen, was die einzelnen Funktionen wirklich machen. Und dann solltest Du Dir auch ein gutes Buch kaufen, (O'Reilly hat da imho die besseren) um die Materie von Grund auf zu verstehen.
Nur so hingebastelt und dann hoffen, daß irgendwer sich schon erbarmt und das ganze geraderückt ist auf Dauer auch nicht das wahre.
Das sollst Du jetzt nicht als Angriff auf Dich werten, sondern einfach als Vorschlag.
Grüße
Klaus