0

jQueryを使用してフォームをサーブレットに送信し、iTextを使用してPDFストリームを生成しています。

private void service(HttpServletRequest request, HttpServletResponse response)
{
    String oid = "something";
    BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
    Font font = new Font(bf, 12, Font.BOLD, BaseColor.BLUE);
    Document document = new Document(PageSize.A4, 20, 20, 20, 20);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PdfWriter pdfWriter = PdfWriter.getInstance(document, baos);
    document.open();

    Paragraph paragraph = new Paragraph(oid, font);
    paragraph.setAlignment(Paragraph.ALIGN_CENTER);
    document.add(paragraph);
    document.close();
    pdfWriter.close();

    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition", "inline;filename=" + oid + ".pdf");
    response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate"); 
    response.setHeader("Pragma", "No-cache");

    response.setContentLength(baos.size());
    ServletOutputStream sos = response.getOutputStream();
    baos.writeTo(sos);
    sos.flush();
}

私の質問は、私の FORM.submit 関数で、「responseData」を PDF に変換し、現在の JSP ページではなく新しいタブ/ウィンドウで開くにはどうすればよいですか?

$("#myform").submit(function() {
    $.ajax ({
        url: "MyServlet",
        type: "POST",
        data: values
    }) .done (function(responseData) {
    // alert(responseData);  // alert response from servlet, it's raw data of that PDF
    // HOW TO 'convert' RESPONSE TO PDF AND OPEN IT IN A NEW TAB/WINDOW ??
    });
    return false;
});

任意の提案をいただければ幸いです。ありがとう!

4

1 に答える 1