0

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

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

4

1 回答 1

1

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

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

%PDF-1.4
... some binary stuff

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

在 Java 中解码 Base64 数据

于 2015-03-02T13:34:34.373 回答