-1

我有 Spring Controller,在调用它的请求映射时。我正在生成 PDF 文件。但问题是生成的 PDF 的名称与请求映射名称相同。

在这里我知道我们可以使用@PathVariable 来命名。但我不想使用它。

例子 :

@RequestMapping(value = { "/pdfDownload" }, method = RequestMethod.GET)
public void pdfDownload(HttpServletRequest request, HttpServletResponse response) {
        //Logic OF generating PDF file

    // set response
    response.setContentType("application/pdf");
    response.setCharacterEncoding("UTF-8");
    response.setHeader("Content-Disposition", "inline; filename=Mypdf12345.pdf");

}

在这里,我生成的 PDF 文件名为 pdfDownload。但我希望它为 Mypdf12345.pdf。我不想使用@PathVariable

请帮我解决这个问题。谢谢你。

4

3 回答 3

1
response.setContentType("application/pdf");
response.setCharacterEncoding("UTF-8");    
response.setHeader("Content-Disposition", "attachment; filename=Mypdf12345.pdf");
于 2013-10-10T12:12:17.970 回答
0

试试这个方法

response.setContentType("application/x-pdf");
response.addHeader("Content-Disposition", "attachment; filename=Mypdf12345.pdf");
于 2013-10-10T10:20:07.427 回答
-1

我得到了我的答案。较早的问题是我使用响应的输出流来编写 PDF 文档。因此,现在我正在将 PDF 文档写入 ByteArrayOutputStream,完成写入后,我正在将该流写入响应的 outputsteram。

例如

@RequestMapping(value = { "/pdfDownload" }, method = RequestMethod.GET)
public void pdfDownload(HttpServletRequest request, HttpServletResponse response) {

      //using bytearrayoutputstream instead of response outputstream,
      ByteArrayOutputStream  out = new ByteArrayOutputStream();


        //Logic OF generating PDF file

    // set response
    response.setContentType("application/pdf");
    response.setCharacterEncoding("UTF-8");
    response.setHeader("Content-Disposition", "inline; filename=Mypdf12345.pdf");

    //transferring that stream to response output stream
    out.writeTo(response.getOutputStream());

}

就是这样。谢谢你的回复。

于 2013-10-23T04:45:58.527 回答