Autor | Zpráva | ||
---|---|---|---|
Karel Hudeček Profil * |
#1 · Zasláno: 21. 3. 2007, 00:48:58
PHP skript na serveru posílá klientovi PDF soubor. Když klient chce prohlédnout PDF soubor, spustí se plugin Acrobat Readera a ohlásí, že soubor nezačíná "%PDF", že je poškozen atd... Když tento neotevřený soubor nechám uložit a otevřu jej z disku, vše je OK. PHP skript posílá hlavičky MIME, velikost souboru, kódování, cílový název, atd... a v datech není jediný bajt navíc. Neví někdo čím to je?
(PHP5; klienti MSIE 6, Mozilla, Acrobat 5.1) |
||
Alphard Profil |
#2 · Zasláno: 21. 3. 2007, 07:02:02
http://radekhulan.cz/item/jak-na-download-pdf-souboru-v-php/category/a pache-php
zde je řešen problém downloadu, ale jako přehled hlaviček by se to mohlo hodit :-) |
||
Karel Hudeček Profil * |
#3 · Zasláno: 21. 3. 2007, 18:34:31
Díky za odkaz, jenže v hlavičkách problém nevidím. Prohlížeč pozná, že je to PDF a předá ho acrobatu, jenže ten to nebere. Stačí uložit a otevřít z disku a vše je ok, takže problém s downloadem to není.
|
||
Yrrah Profil |
#4 · Zasláno: 22. 3. 2007, 20:06:18
A můžeš se podívat, čím ten soubor začíná, když ho zobrazíš jen v prohlížeči (jako text)?
Nejspíš se na disk uloží trochu jiný výstup než ten, co posíláš prohlížeči. Neposíláš to jako UTF-8 i s BOM hlavičkou? |
||
Pavel Strejček Profil |
#5 · Zasláno: 23. 3. 2007, 03:25:21
To je s největší pravděpodobností bug MSIE. Může pomoci přidat na konec URL, které vytváří PDF příponu .pdf. Nějak takhle:
stranka.php?id_dokumentu=123&ext=.pdf Další věc která může mít negativní vliv je pokud je vytváření PDF spojeno s metodou POST, tu je lepší vynechat. A ještě občas zlobí, pokud není nataveno toto: session_cache_limiter('private'); Header('Pragma: public'); |
||
Časová prodleva: 4 dny
|
|||
Karel Hudeček Profil * |
#6 · Zasláno: 27. 3. 2007, 01:26:49
V prohlížeči se mi jako text nezobrazí, rovnou to jde do Acrobata. Volba "Zobrazit zdrojový kód" je nepřístupná. Jestliže v Acrobatu soubor uložím, začíná správně tak jak má a také už jde zobrazit v Acrobatu. Posílám to binárně, je to tak dobře?
Nevím jestli to je bug MSIE, ale já to zkouším v Mozille. V MSIE to samozřejmě taky nefunguje. "Pragma: public" - mám. |
||
Pavel Strejček Profil |
#7 · Zasláno: 27. 3. 2007, 11:29:44 · Upravil/a: Pavel Strejček
Pokud se to uloží jako soubor rovnou z prohlížeče bez otevření v Acrobatu, tak je to taky poškozené?
Jedná se o vytváření PDF nějakou třídou nebo o stahování již vytvořeného PDF? |
||
Pavel Strejček Profil |
#8 · Zasláno: 27. 3. 2007, 11:32:25
A co je tedy na začátku, když se to uloží rovnou z prohlížeče?
|
||
Karel Hudeček Profil * |
#9 · Zasláno: 28. 3. 2007, 02:18:07
Když se to uloží rovnou z prohlížeče, tak je to normální a korektní PDF, které začíná tak jak má. Porovnáním je totožné s původním souborem, který PHP skript posílá. Čili PDFko není vytvářeno, je pouze otevřeno na serveru ze souboru a posláno klientovi.
|
||
Pavel Strejček Profil |
#10 · Zasláno: 28. 3. 2007, 02:38:22
Takže z toho vyplívá, že po uložení z prohlížeče na disk to jde otevřít bez chyb, když je to stejný soubor jako na serveru. Chyba musí tedy vznikat při komunikaci prohlížeče s Acrobatem, není v datech. Zkontroloval bych všechny HTTP hlavičky (neškodilo by poslat je sem) a udělal bych ty čtyři doporučení co jsem psal. Víc nedokážu z poskytnutých informací poradit.
|
||
Časová prodleva: 3 měsíce
|
|||
kruxik Profil * |
#11 · Zasláno: 12. 6. 2007, 15:37:23
Jde o chybu MSIE, dá se vyřešit přenastavením Apache:
BrowserMatch "MSIE" brokenvary=1 BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1 BrowserMatch "Opera" !brokenvary SetEnvIf brokenvary 1 force-no-vary |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0