当前位置: 首页 > 知识库问答 >
问题:

带有ResponseEntity和pdf的HttpStatus

燕翼
2023-03-14

我有一个spring mvc控制器,它生成一个“应用程序/PDF”来下载生成的PDF。我想返回的总是pdf,也返回不同的HTTP代码取决于某些条件。

@RequestMapping(value = "/obtain/downloadPDF", method = RequestMethod.GET, produces = "application/pdf")
@ResponseBody
public ResponseEntity<?> getPdfFile(HttpServletResponse response,HttpServletRequest request) throws IOException{

    response.setHeader("Content-disposition", "inline; filename=\"" +"file.pdf" +"\"");
    String error = getPDF(response, request);
    logger.debug("PDF error : " + StringUtils.defaultIfEmpty(error,"null") );
    return new ResponseEntity<>("",HttpStatus.INTERNAL_SERVER_ERROR);
}

我们的想法是,我希望返回输出流中的pdf,但返回不同的结果代码(200、500等)。事件当我返回500时,我想返回一个PDF。有可能吗?

任何帮助都将不胜感激。

共有1个答案

安毅
2023-03-14

我不能百分之百确定这一点,但我认为该方法返回的是HttpServletResponse中的任何内容,而不是返回的对象。

我认为您应该使用HttpServletResponse.getWriter().Write(responseEntity.getBody())HttpServletResponse.setHttpStatus(responseEntity.getTtpStatus())或仅使用等效的硬编码值...

另外,你看到错误和200状态并排吗?如果是这样,试着将实体参数化为字符串--无论你在其中放入什么可抛出的东西,都应该能很好地工作。

请让我知道,如果你尝试了,但它不工作,这样我可以编辑或删除这个答案-我实际上还没有尝试过,但有兴趣找出为什么代码不工作。

 类似资料:
  • 我的SpringBoot应用程序通过REST HTTP调用外部服务,并通过客户端和方法实现。 到目前为止,客户机接收的始终是字符串主体->。前一段时间,我们调用的服务返回HTTP 202,但没有body,因此抛出以下异常: 。

  • 问题内容: 我的公司需要具有Java API的PDF查看器,并具有使用FDF表单数据的附加要求。 我发现的唯一一个是JPedal,它承诺将提供我们需要的所有功能,但花费很多。那我有什么选择呢?还有其他工具可以做到吗? 编辑: 我发现iText是将FDF数据合并到PDF表单中的简便方法。 Sun的pdf-renderer是唯一可以 正常 工作的LGPL查看器(不同于Adobe自己使用的10年的Jav

  • 我正在将代码从iText5迁移到iText7,目前我正在努力将一个签名添加到已经包含另一个签名的PDF中。这些签名是用我们的国民身份证(公民卡)进行的。 在iText5中,我使用了PdfStamper,但它在Itext7中丢失了... 这是我目前所掌握的: POReID(https://github.com/POReID/POReID)是用于与智能卡交互的库。 当第一次签署文件时,它工作得很好。再

  • 这样,把pdf文件复制给别人就会迫使“复印机”说出他的用户名和密码…… 编辑:密码是打开文件而不是编辑或打印它,我希望用户能够突出显示文本和添加他们自己的注释

  • 问题内容: 我们有一个基于Java的系统,该系统从数据库中读取数据,将各个数据字段与预设标签合并,然后将结果转换为with 。 在格式,它看起来是这样的: 现在,我正在寻找一种允许某些字段包含静态 HTML格式 内容的方法。此内容将通过我们的支持HTML编辑器生成(沿着线的东西,等),或者从外部粘贴。 我的计划是遵循此JavaWorld文章的配方: 用于将HTML格式的字符串转换为正确的XHTML

  • 我已经成功地将我的索引页面转换成pdf格式,遵循来自互联网的文档,但是我不能使用带有参数的URL,如下所示 它返回错误,如何从这个url转换为PDF