I want to show pdf in new tab after generated it, im using JQuery 1.12.3 and Spring MVC 4.
When i clic to my link, i generate pdf and my ajax method show success but my pdf isnt showed in new tab, what i've forgot ?
i've follewed this posts :
Open ResponseEntity PDF in new browser tab
Spring - display PDF-file in browser instead of downloading
I've tried to remove ResponseBody annotation, but i've the same result
Here is my code :
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;
}