ウェブサイトから PDF をダウンロードする必要があるという要件があります。 PDF はコード内で生成する必要があり、FreeMarker と のような PDF 生成フレームワークの組み合わせになると考えましたiText
。もっと良い方法はありますか?
しかし、私の主な問題は、ユーザーが Spring コントローラーを介してファイルをダウンロードできるようにするにはどうすればよいかということです。
ベストアンサー1
@RequestMapping(value = "/files/{file_name}", method = RequestMethod.GET)
public void getFile(
@PathVariable("file_name") String fileName,
HttpServletResponse response) {
try {
// get your file as InputStream
InputStream is = ...;
// copy it to response's OutputStream
org.apache.commons.io.IOUtils.copy(is, response.getOutputStream());
response.flushBuffer();
} catch (IOException ex) {
log.info("Error writing file to output stream. Filename was '{}'", fileName, ex);
throw new RuntimeException("IOError writing file to output stream");
}
}
一般的に言えば、 がある場合response.getOutputStream()
、そこに何でも書き込むことができます。この出力ストリームを、生成されたPDFをジェネレーターに渡す場所として渡すことができます。また、送信するファイルの種類がわかっている場合は、
response.setContentType("application/pdf");