2010-04-29 6 views
7

hier die Anfrage und Antwort ist HeaderWenn Header Senden einer PDF zum Download, anhängt Safari .html

http://www.example.com/get/pdf 

GET /~get/pdf HTTP/1.1 
Host: www.example.com 
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 115 
Connection: keep-alive 
Referer: http://www.example.com 
Cookie: etc 

HTTP/1.1 200 OK 
Date: Thu, 29 Apr 2010 02:20:43 GMT 
Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 
X-Powered-By: Me 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Pragma: no-cache 
Cache-Control: private 
Content-Disposition: attachment; filename="File #1.pdf" 
Content-Length: 18776 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html; charset=utf-8 
---------------------------------------------------------- 

Grundsätzlich sind die Response-Header durch die DOMPDF stream() Methode gesendet werden.

In Firefox wird die Datei als File #1.pdf angezeigt. In Safari wird die Datei jedoch als File #1.pdf.html gespeichert.

Weiß jemand, warum Safari die HTML-Erweiterung an den Dateinamen anhängt?

Ich verwende auch Kohana 3, die PDF aus einer Controller-Methode.

+2

Könnte es in Bezug auf den Content-Type auf Text/HTML gesetzt sein? – Kitsune

Antwort

10

Von dem, was ich sehe der Inhaltstyp ist falsch, ich glaube, wenn das behoben ist, wird Ihr Problem gelöst werden.

+1

Total verpasst! Ich schätze, ich werde es dann auf 'application/pdf' setzen. – alex

+0

Yup, ich denke, das sollte das Problem lösen –

2

Weil Sie sagen, dass es HTML ist. Korrigiere deinen MIME-Typ.

Content-Type: text/html; charset=utf-8 
2

können Sie ändern, wie Kohana 3 Header sendet wie so ...

$this->request->headers['Content-Type'] = File::mime($file); 
1

ich es behoben habe von der Zugabe(); nach dem Streaming es

$dompdf = new DOMPDF(); 
$dompdf->set_paper("a4", "portrait"); 
$dompdf->load_html($html); 
$dompdf->render(); 
$dompdf->stream($invoice.".pdf"); 
die(); 
+0

Das funktionierte für mich mit League \ Csv-Bibliothek mit Laravel 4.2. Scheinbar werden Kopfzeilen hinzugefügt oder geändert, nachdem '$ csv-> output (' file.csv '); 'aufgerufen wurde, was Safari verwirrte. Fügen Sie einfach 'die;' nach dem Aufruf der Ausgabe hinzu. –