2013-09-26 54 views
0

我使用PDFBOX API生成在我的項目的PDF文件,最初我只是存儲動態生成的PDF文件在我的服務器,現在我想流pdf文件在下面的代碼問題在加載PDF文件瀏覽器中播放框架(斯卡拉)

Ok.stream(Enumerator.outputStream { os => 
      doc.writeToStream(os)//doc holds content of pdf file 
      os.close() 
     }).withHeaders(
      CONTENT_TYPE -> "application/pdf", 
      CONTENT_DISPOSITION -> "attachment; filename=report.pdf" 
     ) 

瀏覽器我有一些反應開始爲

%PDF-1.4 
%���� 
1 0 obj 
<< 
/Type /Catalog 
/Version /1.4 
/Pages 2 0 R 
>> 
endobj 
2 0 obj 

希望它看起來像pdf文件已經生成,但在瀏覽器中犯規負荷..我不知道我錯過了什麼,我只是想加載pdf文件新標籤

+0

您是否嘗試過多種瀏覽器? – joescii

+0

@barnesjd雅,我試圖鉻,Safari瀏覽器,火狐......但沒有一個人工作.. – immutable

+0

「沒有在瀏覽器中加載」:這是否意味着瀏覽器完全不下載任何東西,或者它只是下載了一個不顯示? – adhominem

回答

0

嘗試的CONTENT_DISPOSITION設置爲「內聯」:

Ok.stream(Enumerator.outputStream { os => 
     doc.writeToStream(os)//doc holds content of pdf file 
     os.close() 
    }).withHeaders(
     CONTENT_TYPE -> "application/pdf", 
     CONTENT_DISPOSITION -> "inline; filename=report.pdf" 
    ) 

,看看它是否有差別。

它不應該,儘管具體的行爲是依賴於瀏覽器。

您可以找到有關內容處置頭here更多細節。

+0

我剛剛解決了...... js中關於處理響應的幾個問題...現在我可以在新窗口中打開生成的pdf ...我已經嘗試過CONTENT_DISPOSITION - >「inline; filename = report.pdf」,無論如何m接受ur回答... – immutable

0

也許枚舉器沒有正確關閉。

試試這個:

Ok.stream(Enumerator.outputStream { os => 
     doc.writeToStream(os)//doc holds content of pdf file 
     os.close() 
    } >>> Enumerator.eof).withHeaders(
     CONTENT_TYPE -> "application/pdf", 
     CONTENT_DISPOSITION -> "attachment; filename=report.pdf" 
    ) 
0

類似:

val enumerator = Enumerator.outputStream { os => 
    doc.writeToStream(os) 
    os.close 
} 

Ok.stream(enumerator >>> Enumerator.eof).as("application/pdf") 

在我的情況下工作太偉大,所以我想有什麼問題writeToStream。你可以做一個測試通過流靜態圖像有什麼特殊的遊戲框架配置

相關問題