2013-09-26 33 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。你可以做一个测试通过流静态图像有什么特殊的游戏框架配置

相关问题