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

标签 java servlets pdf response bytestream

我正在使用 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 线程的答案:

Decode Base64 data in Java

关于java - 如何在浏览器中显示来自byte[]流的pdf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28810903/

相关文章:

asp.net-mvc-2 - 从 .net mvc View 创建 pdf

java - Jmeter CPU 使用率未超过 25%

java - 如何使用 jna 将 byte[] 映射到 void* 缓冲区?

java - Google App Engine 的响应编码(不能改变响应编码)

Spring Hello World HTTP 状态 500 Servlet Init

java - 如何将条件数据添加到 itext 表格单元格中

ios - 如何在 iOS 上绘制具有色调和不透明度的单色 PDF?

java - android audioRecord-应用变化增益

java - 异常启动前的MySQL

java - 让tomcat自动部署带上下文