gpt4 book ai didi

javascript - 使用 spring mvc 和 apache pdf 框从 UI 下载的空的和损坏的 pdf 文件

转载 作者:行者123 更新时间:2023-11-30 15:42:50 25 4
gpt4 key购买 nike

以下代码工作正常,没有错误 我可以使用代码中指定的名称下载文件,但问题是没有内容打印到它,当我打开文件时,我收到错误消息说文件已损坏。虽然我只是将文件保存在某处,但我得到了包含内容的正确文件。

从用户界面:

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();

在 Controller 中:

@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());

关于javascript - 使用 spring mvc 和 apache pdf 框从 UI 下载的空的和损坏的 pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40521176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com