在显示来自Servlet的PDF时出现问题

时间:2018-08-20 09:55:17

标签: javascript java pdf servlets

我试图在我的HTML页面上显示PDF,但显示了它。 我的servlet代码:

try {
    String text = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
    Document document = new Document();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PdfWriter.getInstance(document, baos);
    document.open();
    document.add(new Paragraph(text));
    document.close();

    response.setHeader("Expires", "0");
    response.setHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0");
    response.setHeader("Pragma", "public");
    response.setContentType("application/pdf");
    response.setContentLength(baos.size());
    OutputStream os = response.getOutputStream();
    baos.writeTo(os);
    os.flush();
    os.close();
}
catch(DocumentException e) {
    throw new IOException(e.getMessage());
}

HTML代码:

<object id="mypdfobject" type="application/pdf" style="background-color: orange;color: black">
</object>

JavaScript代码:

$.post("../paymailcontroller?uid="+uId,function(pdata){     
         var objectPDF = document.getElementById("mypdfobject");
         objectPDF.data=pdata;
    });

我使用的浏览器是Google chrome。如果我呼叫该页面,则没有PDF,也不知道在哪里寻找。

如何在任何浏览器中显示创建的pdf?

当前输出是这样的,基本上是原始PDF:

  

%PDF-1.4%����2 0 obj <>流x�+ r r26S�00SI�2P�5�1���BҸ4>>> /父3 0 R / 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 0000000333 00000 n 0000000015 00000 n 0000000421 00000 n 0000000176 00000 n 0000000484 00000 n 0000000529 00000 n尾部<] /根5 0 R /大小7 >> startxref 659 %% EOF

1 个答案:

答案 0 :(得分:0)

您必须设置内容处置。有两种可能性:

(1)在浏览器中显示PDF

data/assets

(2)打开下载文件以下载文件

package_data={
    'xmlboiler.core': ['data/assets/*', 'data/assets/**/*'],
}

更新: 我认为您的JScript不正确。例如。这样做:

python -m pip install --no-index --find-links=build/dist mapscript

对于其余参数,我们设置以下选项:

response.setHeader("Content-Disposition", "inline; filename=\"" + filename + "\";");