2

私のサーブレットでは、いくつかの操作を行った後、PDFを生成しています。そのByteArrayにあります。

次のようにすることで、そのPDFをブラウザに表示できます。

  1. に連れbyte[]て行くInputStream
  2. にそれを書くByteArrayOutputStream
  3. 次に、に書き込みByteArrayOutputStreamますServletOutputStream
  4. そして、nullを返します。

これにより、現在のウィンドウにPDFが表示されますが、特定のJSPページにPDFを表示することはできますか?PDFを表示しながら、そのJSPのフッターにいくつかのボタンを同時に配置したいからです。上記のように、ウィンドウ全体にはPDFのみが含まれます。

4

2 に答える 2

1

をJSPページに埋め込み、IFRAMEフッターを表示する部分を除いてページ全体を占めるようにそのサイズを設定できます。フッターはJSPの一部になります。IFRAME target / srcは、PDFを表示するサーブレットになります。

現在、いくつかのリクエストパラメータを使用してページAからサーブレットBを呼び出しているようです。同じリクエストパラメータを使用してページAから新しいJSPを呼び出す必要があります。そうすると、JSPページはIFRAMEのターゲットURLを構築し、PDFページを処理して返すサーブレットBを呼び出します。

于 2012-10-09T11:19:00.500 に答える
0

JSPフォーム送信
action="PDFServlet" method="post"
SERVLET コード
byte[] から ServletOutputStream に読み込む

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        File file = new File("estatement.pdf");

        ServletOutputStream stream = null;
        BufferedInputStream buf = null;
        try {
            stream = response.getOutputStream();
            // set response headers
            response.setContentType("application/pdf");
            response.setDateHeader("Expires", 0);
            response.addHeader("Content-Disposition",
                    "inline; filename=estatement.pdf");
            response.setContentLength((int) file.length());
            buf = new BufferedInputStream(new FileInputStream(file));
            int readBytes = 0;
            while ((readBytes = buf.read()) != -1)
                stream.write(readBytes);
        } finally {
            if (stream != null)
                stream.flush();
            stream.close();
            if (buf != null)
                buf.close();
        }
    }
于 2018-09-04T05:51:48.210 に答える