使用Java Servlet在浏览器中显示Pdf
我的申请中有pdf文件。我需要在浏览器中显示pdf。我正在将文件作为fileInputStream读取,我需要在浏览器中与我的应用程序一起显示pdf。但我没有pdf路径,我有文件流。
请给我一些建议和例子
我已经使用ajax显示pdf,正在使用call_method()javascript
ajax请求方法来调用showPdf操作,在showpdf操作中,只是将pdf文件转换为ByteArrayOutputStream并将结果写入输出流中。但是它显示了下面提到的结果。
:
%PDF-1.4% 1 endstream endobj 4 0 obj <>>> / MediaBox [0 0 595 842] >> endobj 1
0 obj <> endobj 3 0 obj <> endobj 5 0 obj <> endobj 6 0 obj <> endobj xref 0 7
0000000000 65535 f 0000000389 00000 n 0000000015 00000 n 0000000477 00000 n
0000000232 00000 n 0000000540 00000 n 0000000585 00000 n拖车<<
142354f5ebefd65d6aacd33a7cb2b4ab>] / Info 6 0 R / Size 7 >> startxref 707 %%
EOF
请给一些建议。
call_method(); <br/>function call_method(){
    Ext.Ajax.request({
            waitMsg: 'Saving changes...',
            url:'test.action?method=showPdf',
            params : { },       
            failure:function(response,options){
            },
            success:function(response,options){
                $("#pdf_content").show();               
                $("#pdf_content").html(response.responseText);
                $("#pdf_content").show('slow');
            }
    });
}
public String showPdf() throws IOException {    getResponse().setContentType("application/pdf");
    getResponse().setHeader("Content-disposition","inline; filename=automatic_start.pdf" );
    ByteArrayOutputStream baos = getByteArrayOutputStream();
    getResponse().setContentLength(baos.size());
    ServletOutputStream sos;
    sos = getResponse().getOutputStream();
    baos.writeTo(sos);
    sos.flush();
    return null;
}
private ByteArrayOutputStream getByteArrayOutputStream() throws IOException {
    String filePath = "/homefolder/";
    String folderPath=filePath+"1122/automatic_start.pdf";
    File file = new File(folderPath);
    FileInputStream fis = new FileInputStream(file);
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    byte[] buf = new byte[256];
     try {
            for (int readNum; (readNum = fis.read(buf)) != -1;) {
                bos.write(buf, 0, readNum); //no doubt here is 0
                //Writes len bytes from the specified byte array starting at offset off to this byte array output stream.
                System.out.println("read " + readNum + " bytes,");
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    return bos;
}
回答:
在您的servlet中,将MIME类型设置为适用于PDF的正确类型: application/pdf
参见http://www.iana.org/assignments/media-
types/
以上是 使用Java Servlet在浏览器中显示Pdf 的全部内容, 来源链接: utcz.com/qa/406073.html








