如何在浏览器中显示来自byte []流的pdf?

时间:2015-03-02 13:25:07

标签: java servlets pdf response bytestream

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

如何正确查看浏览器中的PDF格式?

1 个答案:

答案 0 :(得分:1)

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

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

%PDF-1.4
... some binary stuff

因此,似乎缺少的是在通过响应发送内容之前解码内容。 为了执行此解码,Apache Commons Codec具有Base64编码和解码的灵活实现,但您也可以使用各种类和工具来完成此任务。请参阅此SO主题的答案:

Decode Base64 data in Java