servlet pdf将以chrome中的文本形式出现

时间:2012-06-14 18:21:27

标签: javascript pdf servlets

所以我有一个servlet,其URL类似于blah.do?params=xyz

在servlet中我的代码类似于

ServletOutputStream out = response.getOutputStream();
request.setAttribute("Content-Type","application/pdf");
request.setAttribute("Content-Disposition","attachment;filename=test.pdf");
byte[] bytes = SystemServer.getFileContents(fileId).getBytes();      
request.setAttribute("Content-Length","" + bytes.length);
out.write(bytes, 0, bytes.length);
out.flush();

我用

window.open(url,"my file","someparams");

但是chrome正在打开窗口,因为纯文本和视图源确认输出的所有内容都是

%PDF-1.4 %áéëÓ 2 0 obj  ..... all contents....%%EOF

那我怎么能强迫它作为pdf

出现呢

什么是奇怪的是我使用相同的代码将图像恢复到浏览器并且工作正常

2 个答案:

答案 0 :(得分:1)

您需要在响应对象上设置这些属性而不是请求。

答案 1 :(得分:0)

您正在设置多个事项作为请求属性,这些属性应该实际应在响应上设置。

response.setContentType("application/pdf");
response.setContentLength(bytes.length);
response.addHeader("Content-Disposition","attachment;filename=test.pdf");