• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Apche und grössen PDF-Datei

Hallo,

um PDF-Dateien in unserem Intranet zu visualisieren, habe ich folgende Perl-script:

#!/usr/bin/perl
$file = "file.pdf";
print "Content-Type: application/pdf\n\n";
open(FILE, $file);
while(<FILE>) {
print $_;
}
close FILE;

Alles läuft perfekt, aber mit Firefox und grössen Dateien (> 30MB) besteht ein Problem.
In diesem Fall "Acrobat Reader" gibt folgenden Fehler:
"Die Datei ist beschädigt und kann nicht repariert werden" (ich habe aus Italienisch übersetzt).

Ich habe dann einfach eine html-Seite mit einen link an "file.pdf" gemacht und mit "ethereal" geschaut.

Ich habe festgestellt, dass wenn ich folgende Zeilen in meinen Perl-script einfüge ...
print "Accept-Ranges: bytes\r\n";
print "Content-Length: 35964175\r\n";
print "Content-Range: bytes 246435-36210609/36210610\r\n";
print "If-Range: \"418c82-22887b2-9f333cc00\"\r\n";

... dann läuft ok, aber natürlich nur mit dieser PDF-Datei (mit allen anderen PDF-Dateien läuft nicht).

35964175 ist natürlich die Grösse von "file.pdf"

Meine Frage ist folgende: wie kann ich diese Lösung modifizieren damit mein Perl-script für alle PDF-Dateien läuft ?

Grüsse. Miche
 
OP
M

mrezzonico

Member
Hallo Marce,

> gibt's das Problem auch, wenn Du die PDF-Datei direkt abrufst?
Nein, eben nicht.

> Bzw. warum tust Du das denn nicht?
Wegen Sicherheitsgründen sind die Dateien asserhalb vom Web-Server.

Grüsse. Miche
 

marce

Guru
Den Sicherheitsaspekt musst Du mir erklären - ich finde den nirgends...

Ansonsten modifiziere das Script so, daß Du für jedes bel. PDF die Größe ausliest und die eben dann mitverarbeitest.
 
OP
M

mrezzonico

Member
Hallo Marce,

> Den Sicherheitsaspekt musst Du mir erklären - ich finde den nirgends...
Ich arbeite an einen DMS (Document Management System).
Metadaten sind in einen MySQL Database gespeichert. Dokumente (PDF-Files, ...) sind im File-System gespeichert.
Jede Benutzer muss sich im DMS-Applikation einloggen und dann startet eine "Session".
Mit dem Session-ID kann ich verifizieren ob einen Benutzer die Berechtigung hat eine bestimmte PDF-Datei zu sehen.
Diese Verifizierung wird in einen Perl-Script gemacht.
Wenn die PDF-Dateien direkt im Web-Sever gespeichert sind, finde ich gefährlich.
Andere DMS (z.B. KnowledgeTree) arbeiten änlich (Dateien sind nicht im Web-Server gespeichert).

> Ansonsten modifiziere das Script so, daß Du für jedes bel. PDF die Größe ausliest und die eben dann mitverarbeitest.
Schon probiert, aber ohne Erfolg.


Grüsse Miche

Grüsse Miche
 
Oben