我正在使用 servlet 并将带有 byte[]
流的 http 响应传递到浏览器。我在我的java代码中设置了 response.setContentType("application/pdf");
但它仍然显示垃圾代码,例如: JVBERi0xLjQKJeLjz9MKNCAwIG9iago8PC9UeXBlL1hPYmplY3QvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU3VidHlwZS9JbWFnZ S9CaXR
我应该怎样做才能在浏览器中正确查看 pdf?
最佳答案
PDF 文档很容易被识别,因为它们的第一个字符是 %PDF 后跟版本号。
您可以看到这里显示的内容不遵循该规则,因此不是 PDF。尽管如此,这个字符串看起来很像 Base 64 编码的内容,事实上,如果您要尝试使用 Base64 解码器,您会看到解码的输出打印一个以 :
开头的文档%PDF-1.4
... some binary stuff
因此,在通过响应发送内容之前,似乎缺少内容的解码。 为了执行此解码,Apache Commons Codec 灵活地实现了 Base64 编码和解码,但您也可以使用各种类和实用程序来完成这项工作。请参阅此 SO 线程的答案:
关于java - 如何在浏览器中显示来自byte[]流的pdf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28810903/