【发布时间】:2017-07-10 18:51:03
【问题描述】:
我想在生成 pdf 后在新选项卡中显示它,我使用的是 JQuery 1.12.3 和 Spring MVC 4。
当我点击我的链接时,我生成了 pdf,我的 ajax 方法显示成功,但我的 pdf 没有显示在新标签中,我忘记了什么?
我已经关注了这个帖子:
Open ResponseEntity PDF in new browser tab
Spring - display PDF-file in browser instead of downloading
我尝试删除 ResponseBody 注释,但结果相同
这是我的代码:
HTML:
<a id="3676274" class="bulletinLink" target="_blank" href="#">Bulletin du 2015-04-30</a>
jQuery :
$(".bulletinLink").click(function(e){
e.preventDefault();
var id = $(this).attr('id');
var oAjax;
var sUrl = sUrlBase + '/generatePdf/'+id;
oAjax = $.ajax({
url: sUrl,
type: 'GET',
cache: false,
data : '',
async : false
});
oAjax.done(function(transport) {
alert("success");
});
oAjax.fail(function(transport) {
alert("fail");
});
});
Java:
@RequestMapping(value = "/generatePdf/{id}", method = RequestMethod.GET)
@ResponseBody
public final ResponseEntity<byte[]> generateWithResponseBody(@PathVariable("id") final int idBulletin
,final HttpServletRequest httpRequete, final HttpServletResponse httpReponse) throws ApplicationException
{
...
HttpHeaders headers = new HttpHeaders();
headers.setContentType( MediaType.parseMediaType( "application/pdf" ) );
String filename = "spring_tutorial.pdf";
headers.setContentDispositionFormData( filename, filename );
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
ResponseEntity<byte[]> response = new ResponseEntity<byte[]>(out.toByteArray(), headers, HttpStatus.OK);
return response;
}
【问题讨论】:
标签: java jquery spring spring-mvc pdf