Я хочу показать этот PDF-файл пользователю, не сохраняя файл PDF на моем сервере.
Запишите его в выходной поток ответа. Давайте предположим, что вы используете iText для создания PDF, передайте поток вывода ответа в PdfWrter#getInstance()
.
public void download() throws IOException {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=\"" + filename + "\"");
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, response.getOutputStream());
document.open();
// Build document.
context.responseComplete();
}
Тем не менее, PDF будет полностью отображаться в браузере. Если вы хотите диалог Сохранить как , просто измените часть inline
в заголовке на attachment
. Или, если вы действительно хотите встроить его в <object>
, вам нужно создать сервлет и выполнить описанную выше работу response
внутри метода doGet()
и, наконец, разрешить <object>
URL указывает на этот сервлет.