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

How to display pdf from byte[] stream in browser?

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

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

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

你可以看到这里显示的内容不符合这个规则,所以不是PDF。不过,这个字符串看起来很像 Base 64 编码的内容,事实上,如果您要尝试使用 base64 解码器,您会看到解码后的输出打印出一个以

开头的文档
%PDF-1.4
... some binary stuff

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

Decode Base64 data in Java