【发布时间】:2017-07-25 17:18:11
【问题描述】:
尝试从 servlet 向客户端发送 PDF。客户端通过 AJAX 发送 POST 请求,该请求由 servlet 处理生成 PDF 并将 PDF 作为响应发送给客户端。
我尝试了此处发布的选项无济于事(获得空/不可打开的 pdf):Opening PDF String in new window with javascript
任何帮助将不胜感激!
到目前为止,我只能使用以下代码在浏览器控制台中打印格式化的 PDF 字符串:
Java Servlet:
response.setContentType("application/pdf");
response.setHeader("Content-disposition","attachment; filename=ProgressReport.pdf");
response.setContentLength((int) pdfFile.length());
OutputStream out = response.getOutputStream();
FileInputStream in = new FileInputStream(pdfFile);
byte[] buffer = new byte[1024];
int length =0;
while ((length = in.read(buffer)) != -1){
out.write(buffer, 0, length);
System.out.println(buffer);
}
in.close();
out.flush();
JS
$.ajax({
url : "GenerateReport",
data : {
...
},
type : "POST",
success : function(result) {
console.log(result);
//window.open("data:application/pdf, " + encodeURI(result));
//download(result);
},
error : function(result) {
...
}
})
浏览器控制台中的 PDF 字符串
%PDF-1.4 %����3 0 obj<</Filter/FlateDecode/Length 238>>streamx��QMO�@��x��(��D��!A�x�R��T�-�n��{�5LDB�e2�y�>2�l�Y$1�:a�i.�"�~f ...
【问题讨论】:
标签: javascript java ajax pdf servlets