【问题标题】:How to display pdf from byte[] stream in browser?如何在浏览器中显示来自字节 [] 流的 pdf?
【发布时间】:2015-05-02 20:53:33
【问题描述】:

我正在使用 servlet 并将带有 byte[] 流的 http 响应传递给浏览器。我在我的java代码中设置了response.setContentType("application/pdf");,但它仍然显示垃圾代码:JVBERi0xLjQKJeLjz9MKNCAwIG9iago8PC9UeXBlL1hPYmplY3QvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZS9CaXR

我应该怎么做才能在浏览器中正确查看pdf?

【问题讨论】:

  • 你得到的“垃圾”看起来像一个 base64 编码的 PDF 标题。
  • 建议的重复似乎是内容类型标头的问题,但这看起来更像是 base64 编码问题,而 contentType 部分实际上处理得当,正如 OP 建议的那样。

标签: java servlets pdf response bytestream


【解决方案1】:

PDF 文档很容易被识别,因为它们的第一个字符是 %PDF,后跟版本号。

您可以在此处看到显示的内容不遵循该规则,因此不是 PDF。不过,这个字符串看起来很像 Base 64 编码的内容,实际上,如果您要尝试使用 base64 解码器,您会看到解码后的输出打印出一个以 : 开头的文档:

%PDF-1.4
... some binary stuff

因此,似乎缺少的是在通过响应发送内容之前对内容进行解码。 为了执行这种解码,Apache Commons Codec 灵活地实现了 Base64 编码和解码,但您也可以使用各种类和实用程序来完成这项工作。请参阅此 SO 线程上的答案:

Decode Base64 data in Java

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 2017-12-28
    • 1970-01-01
    • 2014-07-11
    • 2014-06-18
    • 1970-01-01
    相关资源
    最近更新 更多