java - 通过Servlet的OutputStream破坏pdf

标签 java servlets pdf outputstream

我正在尝试将静态pdf(位于系统上)发送到outputStream,以显示另存为对话框。 但是当打开 Pdf 时,只显示一个空白页面:

这是应显示对话框的代码:

    //get the pdf:
    String pathToPdf = servletContext.getRealPath("/pdfFiles/dealer.pdf");
    File pdfFile = new File (pathToPdf);

    response.setContentType("application/pdf");
    response.addHeader("Content-Disposition", "attachment; filename=dealer.pdf");
    response.setContentLength((int) pdfFile.length());

    FileInputStream fileInputStream = new FileInputStream(pdfFile);
    OutputStream responseOutputStream = response.getOutputStream();
    int bytes;
    while ((bytes = fileInputStream.read()) != -1) {
        responseOutputStream.write(bytes);
        }
    responseOutputStream.flush();
    responseOutputStream.close();

Stacktrace 的内容如下:

WARNING: Invalid HTML; bare lessthan sign found at line 4. Surroundings: '<
/Creator (Apache FOP Version'.
WARNING: Invalid HTML; bare lessthan sign found at line 5. Surroundings: '/Creator (Apache FOP Version 1'.
WARNING: Invalid HTML; bare lessthan sign found at line 11. Surroundings: '<
  /N 3
  /Length 11 0 R
  /F'.
WARNING: Invalid HTML; bare lessthan sign found at line 12. Surroundings: '/N 3
  /Length 11 0 R
  /Filte'.
WARNING: Invalid HTML; bare lessthan sign found at line 18. Surroundings: '?s??e???'?9???`??2?&c?tI?'.
WARNING: Invalid tag found: unexpected input while looking for attr name or '/>' at line 25. Surroundings: '?+?U?Zp'pWp?????????e?F|'.
WARNING: Invalid HTML; bare lessthan sign found at line 68. Surroundings: '<
  /Name /Im1
  /Type /XObjec'.
WARNING: Invalid HTML; bare lessthan sign found at line 69. Surroundings: '/Name /Im1
  /Type /XObject
  '.
WARNING: Invalid tag found: unexpected input while looking for attr name or '/>' at line 85. Surroundings: '??r??"?F?t??$??n{?q??O~??{?'.

任何人都可以说我错过了什么或做错了什么吗? 谢谢!!

最佳答案

你应该尝试打电话

response.reset();

在设置内容类型之前。也许某个库已经设置了 header ,并且不同的 header 会发生冲突。

关于java - 通过Servlet的OutputStream破坏pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19290320/

相关文章:

java - CMIS 与 REST。哪个客户端更容易从头开始实现?

java - Socket C客户端和Java服务器只能发送一个String

java - 无法访问 Java Servlet

java - 使用 json 从单选按钮输入显示动态 mysql 表

Php Regex - 如何选择是否等于某物

javascript - 在横向模式下将 .rdlc 报告导出为 pdf

java - 为什么我不断收到此错误 "error: unexpected type"

java - 无法加载 netezza JDBC 驱动程序

java - 将数据输入 Google Cloud Datastore

pdf - 在 UNIX 中以编程方式将 pdf 页面拆分为它们自己的 pdf