2011-10-11 90 views
0

我正在編寫一個將PDF流式傳輸到瀏覽器的過濾器。但它並不是要求打開PDF。我所得到的是在下面的瀏覽器窗口中顯示的PDF內容:流媒體PDF在瀏覽器中以文本形式打開

%PDF-1.4 %âãÏÓ 4 0 obj <>stream xKoÂ0ïû+æØJ±CGo<-¤£ªIIIJEüû:Qi9 V¾xvw>ÍÚ{ê+âp-Á\*&_ÑöÄï:'21Ñý-)½¾qÄÔµárÙÌç$¥ÇL÷¢wݵ·´Ô£Wש^¨ÐØæT&Bg$ L¨wmUÀ2á89ºÓÝ8ª¬Ø Å«C®Ó$O0ØEYQYå÷jÛä¿ó,Æ[ïéµDLÊ´@guj`íà .:ÜîOòky#Ü/ªMõÃ_å2Ù:tk¾ôýBµð}eÀÀ,X¨ñ P¾¡ú±zËÁãSo6ÄÔWà?²ë1!Zôs|fÉÉ@QÖ8WzÁ:±.?Îßæçô¾RuÛ endstream endobj 1 0 obj<>>>/MediaBox[0 0 595.28 841.88]>> endobj 3 0 obj<> endobj 2 0 obj<> endobj 5 0 obj<> endobj 6 0 obj<> endobj 7 0 obj<> endobj xref 0 8 0000000000 65535 f 

我檢查響應頭,它們顯示如下:

HTTP/1.1 200 OK 
Server: Apache-Coyote/1.1 
Content-Disposition: attachment; filename=example.pdf 
Connection: keep-alive 
Keep-Alive: timeout=5 
Accept-Ranges: bytes 
Content-Type: application/pdf;charset=ISO-8859-1 
Transfer-Encoding: chunked 
Date: Thu, 13 Oct 2011 01:56:17 GMT 

3db 
%PDF-1.4 
%âãÏÓ 
3 0 obj <</Length 145/Filter/FlateDecode>>stream 
xœMŽ1Â0…÷÷+ž›.ñ’&M\E‡B ƒ¸U+%µ´‹ßT¨È-÷½û8Þˆ}„0X­B`lpˆ¨0B」Þñ 
Ãs¾wЮ7aƒ¢d7û=œÛ)N¥›1«ëÏz¢Æ+¿gjç 
Û£¦±Œèoªi 
½÷Ê:ÆëÓ=¥õ0¥fµ‰ÝR³ÂÁ¾(V 
endstream 
endobj 
1 0 obj<</Parent 4 0 R/Contents 3 0 R/Type/Page/Resources<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]/Font<</F1 2 0 R>>>>/MediaBox[0 0 595.28 841.88]>> 
endobj 
2 0 obj<</BaseFont/Times-Bold/Type/Font/Encoding/WinAnsiEncoding/Subtype/Type1>> 
endobj 
4 0 obj<</Type/Pages/Count 1/Kids[1 0 R]>> 
endobj 
5 0 obj<</Type/Catalog/Pages 4 0 R>> 
endobj 
6 0 obj<</Producer(iText 2.0.8 \(by lowagie.com\))/ModDate(D:20111013145617+13'00')/CreationDate(D:20111013145617+13'00')>> 
endobj 
xref 
0 7 
0000000000 65535 f 
0000000227 00000 n 
0000000389 00000 n 
0000000015 00000 n 
0000000477 00000 n 
0000000527 00000 n 
0000000571 00000 n 
trailer 
<</Root 5 0 R/ID [<f6f88fa439f0fb7ffd89bb5bcc013692><d7556c8d673d80e2889958cdface8dba>]/Info 6 0 R/Size 7>> 
startxref 
702 
%%EOF 

0 

我曾嘗試:

  • 設置內容配置爲附件
  • 沒有內容配置
  • 的MIME設置爲應用程序/下載
  • 設置將Cache-Control到MAXAGE = 1
  • 設置附註公共
  • 我還建立在Tomcat的web.xml
  • MIME類型創建一個新的標準的網絡應用程序,並使用完全相同的代碼,並生成PDF格式。
+0

你有沒有想出解決辦法。我有同樣的問題 –

回答

0

下面是事情,你應該確保在你的servlet書面迴應的OutputStream之前:

res.setContentType("application/pdf"); 
res.setHeader("Content-disposition", 
        "attachment; filename=" + 
        "Example.pdf"); 

附件標籤是用來告訴瀏覽器沒有打開的文檔,但與某些PDF閱讀器應用程序(如Adobe Acrobat)

文件名是要使用的文件的默認名稱。

+0

內容類型和內容處置標題似乎設置正確。我可以在HTTP分析器 – Maro

+0

中查看哪些瀏覽器正在嘗試使用?您可以嘗試使用Mozilla Firefox或Opera – Saurabh

+0

這發生在IE,Firefox和Chrome – Maro

0

一個訣竅是將一個僞參數添加到以.pdf結尾的URL中。

+0

對不起,我沒有關注。這是什麼意思? – Maro

+0

例如: http://www.yourcompany.com/reports/gen.aspx?id=4398&dummy=doc.pdf id是真正的論點, dummy ... 瀏覽器將考慮.pdf以決定打開PDF閱讀器插件。 –

0

在我的情況下,當使用jasperreports生成報告時會引發此問題。 我找到一個解決方案設置這樣的:

response.setContentType("application/pdf"); 

設置此之前:

JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, new HashMap(), cn);