3

私の要件は、iTextを使用して実行しているデータベースからのデータを含む動的レポートpdfファイルを作成することです。今、このpdfファイルをメニュー、ヘッダー、フッターなどとともにWebページにインラインで表示したいと思います.

そのため、ユーザーが pdf ビューアーを持っている場合、この pdf は、その pdf を印刷するための印刷オプションを使用してユーザーのマシンに表示される必要があります。

4

3 に答える 3

8

これが私がやっている方法です。このアクションは、iframe 内または通常の jsp 内で呼び出すことができます

public class GeneratePdf extends ActionSupport{
    private InputStream inputStream;
    public String execute(){
        HttpServletResponse response = ServletActionContext.getResponse();
        Document document = new Document();
        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
        try {
            PdfWriter.getInstance(document, buffer);
            document.open();
                        // do your thing
            document.close();
        } catch (DocumentException e) {
            e.printStackTrace();
        }

        byte[] bytes = null;
        bytes = buffer.toByteArray();
        response.setContentLength(bytes.length);

        if(bytes!=null){
            inputStream = new ByteArrayInputStream ( bytes );
        }
 return SUCCESS;
}

public InputStream getInputStream() {
        return inputStream;
    }
}

struts.xml で

   <action name="GeneratePdf" class="com.xxx.action.GeneratePdf">
    <result name="success" type="stream">
            <param name="contentType">application/pdf</param>
            <param name="inputName">inputStream</param>
            <param name="contentDisposition">filename="test.pdf"</param>
            <param name="bufferSize">1024</param>
    </result>
   </action>   
于 2012-06-21T12:56:09.633 に答える
0

私はinputStreamアヌが提案したようにアクションを使用してそれをやっています。そして、PDF.JSライブラリを使用します。

オンラインデモ

GitHub

于 2013-01-14T20:02:18.817 に答える