如何在浏览器中显示 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
我正在使用 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