0

私はサーブレットを使用しており、byte[]ストリームを含む http 応答をブラウザーに渡しています。Java コードを設定response.setContentType("application/pdf");しましたが、次のようなガベージ コードが表示されます。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 に答える