PDF-Download

Bash, Shell, PHP, Python, Perl, CGI
marky
Posts: 66
Joined: 2003-06-18 12:49

PDF-Download

Post by marky »

Hallo,

ich nutze ein PHP-Skript zum bereitstellen von PDF-Downloads (hier vereinfacht):

Code: Select all

<?php 

header("Content-type: application/pdf");
header("Content-Disposition: inline; filename=test.pdf");

$fd = fopen ("test.pdf", "r");
while (!feof($fd)) {$inhalt .= fgetc($fd);}
fclose ($fd);

print $inhalt;

?>
Woran kann es liegen, dass der Netscape-Navigator keine korrekte PDF-Datei empfangen kann (er bekommt nur "wirre Zeichen")?

Der Internetexplorer bekommt korrekte Daten.

Geleiches Script läuft auf einem anderem Server problemlos: auch Netscape bekommt hier seine Daten.
r00ty
Posts: 747
Joined: 2003-03-17 15:32

Re: PDF-Download

Post by r00ty »

das sollte klappen:
du benennst die Seite, die das pdf anzeigen soll so in irgendwas.pdf um
machst ne
.htaccess mit

Code: Select all

AddType application/x-httpd-php .pdf
und im der pdf datei:

Code: Select all

<? readfile("/meinpfad/meinpdf.pdf"); ?>
nicht getestet, sollte aber gehen
Last edited by r00ty on 2003-08-14 18:40, edited 1 time in total.
marky
Posts: 66
Joined: 2003-06-18 12:49

Re: PDF-Download

Post by marky »

...aber bewirkt nur, dass auch PDF-Dateien von PHP interpretiert werden. Das bringt mir aber nichts, da das Problem nicht daran liegt.

Wie schon gesagt funktioniert das Skript insoweit problemlos, dass der IE alles korrekt bekommt bzw. dass es auf einem anderen Server mit beiden (Netscape und IE) läuft.

Die Frage ist nun, was gerade an meinem Server anders ist, dass der Browser Netscape mit den Daten nicht klar kommt, der IE aber schon.

Weiß das denn niemand?
r00ty
Posts: 747
Joined: 2003-03-17 15:32

Re: PDF-Download

Post by r00ty »

ich würde es mal probieren
wenn der syntax korrekt ist funktioniert das meine Meinung nach ganz sicher....
(p.s.: hast du mal beim Netscape geschaut, ob er überhaupt PDFs öffnet ?)
gamecrash
Posts: 339
Joined: 2002-05-27 10:52

Re: PDF-Download

Post by gamecrash »

@r00ty:

Die [] funktionieren noch. Beim ersten hast Du mit } statt ] abgeschlossen, beim Zweiten hast Du das / vergessen :P

@Problem:

Könnt sein, dass der Netscape den Content-Length Header braucht? Bin mir ned sicher, aber irgendwas war da mal dass der noch nen Extra-Header braucht...
r00ty
Posts: 747
Joined: 2003-03-17 15:32

Re: PDF-Download

Post by r00ty »

@GameCrash

man war ich besoffen, als ich das geschrieben habe... thx

@Problem

meld dich mal, falls du es rausgefunden hast
marky
Posts: 66
Joined: 2003-06-18 12:49

Re: PDF-Download

Post by marky »

ich würde es mal probieren
ich hab es probiert, aber es hat nichts genützt: beide scripte bringen das gleiche probelm: IE ja Netscape auf meinem Server nein, auf den meisten anderen ja.
hast du mal beim Netscape geschaut, ob er überhaupt PDFs öffnet?
Netscape öffnet diese nicht im Browserfenster, sondern übergibt die Datei an den Acrobat-Reader und dieser öffnet sie in seinem Fenster (bzw. er sollte dies bekommt aber in meinem fall nur Müll - von den meisten anderen Servern klappt es so, wie beschrieben...)

Die Frage ist also: was ist serverseitig bei mir anders, dass der blöde Netscape das nicht kann...
Könnt sein, dass der Netscape den Content-Length Header braucht? Bin mir ned sicher, aber irgendwas war da mal dass
der noch nen Extra-Header braucht...
Das klingt klug. Sofern es die Möglichkeit gibt, das als Standard (beim Apache?!?) einzustellen könnte dies sein. Wie oben beschrieben muss auf anderen Servern ja nichts ergänzt werden.

Weißt du, wie dieser Content-Length Header exakt aussehen muss? Ich würde es dann mal probieren...
gamecrash
Posts: 339
Joined: 2002-05-27 10:52

Re: PDF-Download

Post by gamecrash »

header('Content-Length: '.strlen($inhalt));

Aber ob das wirklich dafür verantwortlich ist, keine Ahnung...

Was bei Deinem Server anders ist, kann ich Dir leider auch ned sagen ;) Evtl. ne andere Apache- oder PHP-Version...
marky
Posts: 66
Joined: 2003-06-18 12:49

Re: PDF-Download

Post by marky »

Der Tipp mit dem Content-Length-Header klang schon sehr schlau, hat aber leider nichts gebracht.

Ich will mal "bildlich" darstellen, was das Probem ist. Die Datei wird von meinem Server geschickt und vom Internetexpolorer korrekz empfangen wie folgt (nur die ersten Zeilen):

Code: Select all

%PDF-1.3 %âãÏ� 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type
/Pages /Kids [6 0 R 24 0 R 26 0 R ] /Count 3 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 10 0 R /F3 12 0 R /F4 14 0 R /F5 16 0 R /F6 18 0 R /F7 20
Demgemäß kann sie der Acrobat-Reader auch korrekt darstellen.

Der Netscape bekommt aber (und nur wenn obiges Script auf !meinem! Server läuft) folgende Zeilen (wieder nur die ersten, wenn man das überhaupt sagen kann :-):

Code: Select all

Ã?0:%v x)¡ïŠ©õÃ?5d«Iâ?°Â¹Â±2iâ??ãâ?¬Ã?Ã?ðGâ?ºzË?êêyÃ?Ã?¶Lcâ?¦SmÃ¥[â?¡Ã­ÃVâ??oí¦«umC£Ã?òÃ?]Ã¥pnâ??n=â?¦Ã?»ž®5ðÃ?Ã?ñ¦"í¡"0qÃ?Ã?Ã?EN{K8¾Dâ??Ã?}i«]â?¡Â¹Â¹
Sowas ist natürlich nicht zu gebrauchen...

Irgendwas muss (mein!) Server anders machen, damit Netscape nicht klar kommt. Dummerweise kann ich auf diesen Browser aber nicht verzichten, sodass ich das Problem lösen muss...
paranoid
Posts: 14
Joined: 2003-04-27 21:48
Location: 67xxx

Re: PDF-Download

Post by paranoid »

Ich könnte mir vorstellen, daß dein Server eine Kompression durchführt und Netscape das nicht mitbekommt. Das solltest du aber abstellen können. Versuch doch mal, ob du die mit Netscape heruntergeladene Datei mit einem (Ent)packprogramm öffnen kannst, ich würde WinZip probieren, da das auch mit GZip etc. klarkommt.
marky
Posts: 66
Joined: 2003-06-18 12:49

Re: PDF-Download

Post by marky »

Ich könnte mir vorstellen, daß dein Server eine Kompression durchführt und Netscape das nicht mitbekommt.
Das war in der Tat richtig - der Server komprimiert die Datei. Wenn ich Sie mit Netscape herunterlade und als .gz speichere, kann ich sie entpacken und dann öffnen.

Das solltest du aber abstellen können.
Wie kann ich verhindern, dass Dateien komprimiert geschickt werden?
r00ty
Posts: 747
Joined: 2003-03-17 15:32

Re: PDF-Download

Post by r00ty »

krazz....
hätt nicht gedacht, dass es das ist

gibts da nicht ein Apache Modul das zippt ?
marky
Posts: 66
Joined: 2003-06-18 12:49

Re: PDF-Download

Post by marky »

gibts da nicht ein Apache Modul das zippt ?
Von der Logik her müsste es der Apache sein, der zippt.

Ich habe einen reinitialisierter Root-Server mit:

-Suse 8.1
-Apache 1.3.26
-Mysql 3.23.52
-PHP 4.2.2
-Openssl 0.9.6.g
-Confixx Pro 2.0

An den Standards habe ich nichts verändert. Ich hoffe, dass ich nicht das ganze neu kompilieren muss, sondern dass es hilft, einfach irgendwo ein "yes" oder "no" zu setzten. Kann mir jemand sagen, wo ich dies tun müsste?
moppi
Posts: 368
Joined: 2003-02-15 11:16

Re: PDF-Download

Post by moppi »

Hallo,

ich hatte ähnliches Problem, folgendes dürfte funktionieren.

Code: Select all

	header('Content-type: application/pdf');
	header('Content-Disposition: attachment; filename='.$pdf.'.pdf');
	readfile('../../admin/pdf_ablage/rechnungen/'.$pdf.'.pdf');
	exit;
Lass mich wissen ob es klappt...
marky
Posts: 66
Joined: 2003-06-18 12:49

Re: PDF-Download

Post by marky »

danke für den Tipp - hat aber leider nichts gebacht. Ich denke, dass der Header nicht das Problem ist. Bisher hat weder der "Content-Disposition"- noch der "Content-Length"-Header etwas am Ergebnis geändert.

Ich denke, man muss dem Apachen einfach nur sagen, dass er nichts komprimiert rausschicken soll, weil - wie wir dank paranoid wissen - Netscape damit nicht klar kommt. Die Frage ist nun nur, wie man das ändern kann...
moppi
Posts: 368
Joined: 2003-02-15 11:16

Re: PDF-Download

Post by moppi »

ich kann mir erlich gesagt nicht vorstellen das es daran liegt.
ich vermute eher mal netscape ist der übeltäter - sorry wenn ich jemanden damit zu nahe trete aber ich hatte zu viel theater mit dem ding. :D

schau bitte mal hier nach, das habe ich dazu gefunden:
http://www.networkcomputing.de/workshop ... _0502.html

gruß
daniel
marky
Posts: 66
Joined: 2003-06-18 12:49

Re: PDF-Download

Post by marky »

Für mich stellt sich jetzt eine neue Frage: ist es für meinen Webserver (Celeron 1.200 MHz, mit 256 MB Ram) gut, alle Seiten zu komprimieren. Zum Thema Serverlast ist man sich da ja uneins. Jedenfalls muss der Server etwa 2 Mio. Seiten bei 25 GByte Traffic im Monat erzeugen.
Was sagt jemand, der sich mit sowas auskennt dazu? Kommt der Server mit oder ohne Komprimierung besser klar?

Ja und dann habe ich immer noch das alte Problem: wie kann die (wenn auch nur explizit für einzelne Dateien) verhindern, dass diese komprimiert ausgegeben werden? Mir ist schon klar, dass hier (auch) Netscape das Problem ist, aber es muss auch mit diesem Browser laufen. Immerhin benutze ich zum Testen nicht eine Uralt-Http-1.0-Version sondern Netscape 4.7.

Ach ja, noch was: Komprimieren die Server "einfacher" 1&1 Webhosting Pakete die Daten? O.g Traffic bezog sich nämlich auf ein solches Paket (bei dem auch der Download mit Netscape funktioniert).
moppi
Posts: 368
Joined: 2003-02-15 11:16

Re: PDF-Download

Post by moppi »

bei traffic würde ich die komprimierung schon empfehlen. man kann den level bei neueren gzip mods einstellen.

handelt es sich dabei um dynamische inhalte?
marky
Posts: 66
Joined: 2003-06-18 12:49

Re: PDF-Download

Post by marky »

handelt es sich dabei um dynamische inhalte?
Zunächst werden alle Seiten mittels PHP zusammengebastelt (Head, Content, Foot). Dann steht noch eine Community bereit, deren Basis eine MySQL-Datenbank ist. Insofern sind die Inhalte recht dynamisch 8O

Die Sache mit der Kompression schreckte mich nur ab, weil der Celeron doch nicht so gerne rechnet. Kompression ist aber meines Erachtens eine rechenintensive Angelegenheit.

Wo kann man den Level einstellen, bzw. die Kompression ganz abschalten?
moppi
Posts: 368
Joined: 2003-02-15 11:16

Re: PDF-Download

Post by moppi »

Celeron nicht gerne rechnet? meines erachtens nach ist der Celeron nicht mit den Multimeida Fähigkeiten so gut ausgestattet wie ein Pentium Pro z.B. aber Linux braucht des bestimmt nicht :D ist meine Auffassung.

zu dem mod_gzip also ich habe da gestern nur einmal schnell danach gesucht und einige parameter dazu gefunden. sieh doch bitte auch mal mit google weiter nach, denn ich habe damit keine weitere erfahrung.

ein tip vielleicht, wenn dein server viel zu tun hat usw. dann wäre es vielleicht angebracht einmal über einen art php-compiler nachzudenken, denn was der rausholt unter umständen da kannst jedes aufgerufene dokument 5x zippen und zum client senden :D

gruß
daniel
marky
Posts: 66
Joined: 2003-06-18 12:49

Re: PDF-Download

Post by marky »

back to the topic:

Wie kann ich verhindern, dass PDF-Dateien komprimiert rausgeschickt werden?

Danke
Marky
hbaes
Posts: 70
Joined: 2002-10-08 21:04

Re: PDF-Download

Post by hbaes »

1.) möglichkeit php.ini
setze:

Code: Select all

zlib.output_compression = Off
die kann natürlich auch nur im betreffenden VHost gesetzt werden

2.)
nähere Infos bzg. Output Compression:
http://www.php.net/manual/de/function.header.php

greets
Harald
cpr
Posts: 22
Joined: 2003-08-12 15:39

Re: PDF-Download

Post by cpr »

In der httpd.conf:

<IfModule mod_gzip.c>
# snip
mod_gzip_item_exclude reqheader "User-Agent: .*Mozilla/4..*["
# snip
</IfModule>

(Die Sektion <IfModule mod_gzip.c> wird schon exxistieren, also bitte einfügen)

Der vorige Poster vermutete PHPs Zuständigkeit. Das kann man aus der Entfernung nicht sagen, aber möglicherweise hilft _vor_ dem Aufruf der Workaround von Jurgen Westerhof <php at jurgle dot nl> 28-Sep-2003 03:07 auf http://de.php.net/header

HTH
marky
Posts: 66
Joined: 2003-06-18 12:49

Re: PDF-Download

Post by marky »

Die Sektion <IfModule mod_gzip.c> existiert bei mir leider nicht.
robertw
Posts: 165
Joined: 2002-12-17 16:10
Location: Berlin

Re: PDF-Download

Post by robertw »

Hallo!

Wenn Du wissen willst, ob Deine Seite gezippt übertragen wird, kannst Du hier einen Test machen.

Sehr schöne Informationen zu dem Thema mod_gzip gibt es hier, inkl. einer Liste, welche Browser-Version es unterstützt.

Robert