2014-10-19 105 views
1

流PDF我有一個流的PDF作爲這樣一個servlet:顯示在iframe中

ServletOutputStream out = response.getOutputStream(); 
byte[] pdfByteArray = JasperExportManager.exportReportToPdf(jasperPrintObject);     
response.reset(); 
response.setContentType("application/pdf"); 
response.addHeader("Content-Disposition","inline;filename=temp.pdf"); 
out.write(pdfByteArray, 0, pdfByteArray.length); 
out.flush(); 
out.close(); 

當我調用servlet這工作得很好。現在我使用ajax來調用servlet並在iframe中顯示pdf。我嘗試這樣做,因爲這樣:

$('#form1').on('submit', function(e) { 
    $form = $(this);               
    $.post($form.attr('action'), $form.serialize(), function(responseText) { 
     $('#frm').attr('srcdoc', responseText); 
    }); 
    return false; 
}); 

iframe的但具有以下數據結束: %PDF-1.4%4 0 OBJ <>流xKo7 2P @ >, I W{襐m 「K I S ( C{ p ۝Yv ~ 7 - QT Uw M K hDpѷ ,Vݓ 8 ` { Z ( (( QX %A \ E _ X] wj ^M Q'j nԭ ( ' + . < Fa Jx 〜T <。( )g Bx 〜 ! 0ɟR g i , o' ( >:I BPT捎J5.kR㢪B]∪{Oj的 :jT f)Lj X\ IKN63 o T 4g n 9\ dhI' s} @

它和它以%EOF結束在servlet中,我重置了響應並設置了內容類型,還應該怎麼做才能讓pdf正確顯示?

+0

它看起來可能無法在iframe中工作。請參閱[本](http://stackoverflow.com/a/12974315/206883)答案 – ponomandr 2014-10-19 15:50:13

+0

謝謝。我會仔細看看的。 – user3245747 2014-10-19 17:30:28

回答

1

我找到了解決上述問題的方法。我一直爲是servlet代碼,但改變了查詢到以下內容:在的responseText

$('#form1').on('submit', function(e) { 
    $form = $(this); 
    $.post($form.attr('action'), $form.serialize(), function(responseText) { 
     $('#processing2').fadeOut(); 
     $('#frm').attr('src', 'theServlet?x=' + $('#x').val() + '&y=' + $('#y').val());          
    }); 
    return false; 
}); 

所以基本上,而不是使用的數據,我重新調用servlet,同時傳遞參數。當然,這意味着實際的代碼必須位於servlet的doGet方法中。