使用spring mvc和apache pdf框从UI下载的空和破碎的pdf文件
Empty and broken pdf file downloaded from UI using spring mvc and apache pdf box
下面的代码工作正常,没有错误,我能够下载代码中指定的名称的文件,但问题是没有打印到它的内容,当我打开文件时,我得到错误说文件损坏。而我只是保存文件的地方,我得到适当的文件与内容。
从UI:
var jsonStrToSend = JSON.stringify( jsonObjToSend );
jsonStrToSend = jsonStrToSend.replace(/"/g, """);
var url = '/'+appPath+'/reportgeneration' ;
var $form = $('<form enctype=''application/json'' action="' + url + '" method="post">').append($('<input type="hidden" name="data" id="data" value="' + jsonStrToSend + '" />'));
$form.appendTo("body").submit();
在控制器:@RequestMapping(value = "/reportgeneration", method = RequestMethod.POST)
public @ResponseBody void reportgeneration(HttpServletRequest request,
HttpServletResponse response){
Map returnMapMessage = new HashMap();
int resultData =0;
HttpSession httpsessionObj = request.getSession(false);
try{
PDDocument doc = new PDDocument();
PDPage intro_page = new PDPage();
doc.addPage( intro_page );
PDPageContentStream contentStream_itro =
new PDPageContentStream(doc, intro_page);
//Some stuff.......
String fileName = reportName+"_"+tempDate.getDate()+"-"+tempDate.getMonth()+"-"+tempDate.getYear()+" "+tempDate.getHours()+tempDate.getMinutes()+".pdf";
//doc.save("/test/webapp/reports/"+fileName);
response.setContentType("application/pdf");
PDStream ps=new PDStream(doc);
InputStream is=ps.createInputStream();
String headerKey = "Content-Disposition";
String headerValue = String.format("attachment; filename='"%s'"", fileName);
response.setHeader("Expires:", "0"); // eliminates browser caching
response.setHeader(headerKey, headerValue);
org.apache.commons.io.IOUtils.copy(is, response.getOutputStream());
response.flushBuffer();
is.close();
doc.close();
我错过了doc.save(),因为我觉得没有必要,因为我没有将文件存储在驱动器的任何地方。但是下面的代码可以正常工作。
ByteArrayOutputStream output = new ByteArrayOutputStream();
doc.save(output);
doc.close();
response.addHeader("Content-Type", "application/force-download");
response.addHeader("Content-Disposition", "attachment; filename='""+fileName+"'"");
response.getOutputStream().write(output.toByteArray());
相关文章:
- 下载HTML5/Javascript MOBILE应用程序中的PDF文件
- 下载所选语言的pdf文件
- JavaScript代码,用于在浏览器中显示字节数组中的PDF文件(非base64编码)
- Phonegap从PDF文件中获取内容
- 如何从地图导出图像并将其插入到新的PDF文件中
- 通过javascript获取pdf文件的表单数据
- Pdf.js:使用base64文件源而不是url来呈现Pdf文件
- 如何使用jquery在工具提示上显示pdf文件
- 在localhost/intranet上嵌入DOC、PPT、XLS、PDF文件
- 使用 php 将 pdf 文件转换为 html 文件
- 创建一个工具来打开android平板电脑上的本地pdf文件
- 将数据库中的数据转换为可下载的PDF文件
- 压缩使用 iText 创建的 PDF 文件
- 在jspdf中使用addHTML保存pdf文件失败
- 如何从输入字段在浏览器中显示PDF文件
- Cordova jsPDF-PDF生成,我在手机上找不到PDF文件
- 是否将PDF文件保存在其他应用程序可以访问的PhoneGap应用程序中?(iOS)
- web应用程序是否可以打开客户端上存在的pdf文件
- 如何使用HtmlUnit下载PDF文件
- Javascript无法识别两个不同的PDF文件