Как я могу создать и отобразить JSp шаблон в формате PDF - PullRequest
0 голосов
/ 12 июня 2018

У меня есть требование, в котором я должен генерировать PDF.Этот PDf мы можем отобразить в полном браузере или мы можем отобразить его внутри iframe в качестве предварительного просмотра.Я хочу создать один шаблон JSP с использованием HTML и JSP с некоторыми динамическими данными.Всякий раз, когда я нажимаю на Generate PFD, я хочу, чтобы этот шаблон пришел в iFrame в виде PDF.Что я должен делать и как я могу конвертировать динамический JSP в PDF?

1 Ответ

0 голосов
/ 12 июня 2018

Первое, что вы можете сделать, это использовать org.apache.pdfbox.

См. Дополнительную информацию и множество примеров https://pdfbox.apache.org/

Когда пользователь нажимает кнопку создания, вам потребуется создатьpdf шаг за шагом, чтобы он выглядел как шаблон.Вы не можете «скопировать» часть шаблона jsp, включая данные, прямо в pdf.

Вы можете создать вывод в виде файла или в виде байтового массива:

protected void create(Object model, HttpServletRequest request, HttpServletResponse response) throws Exception {

    ByteArrayOutputStream baos = createTemporaryOutputStream();

    PDDocument document = newDocument();

    // Build PDF document.
    buildPdfDocument(model, document, request, response);
    document.save(baos);
    document.close();


    final String filename = "pdf-as-byte-stream.pdf";

    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");

    writeToResponse(response, baos);
}

При вышеуказанном решении pdf будет отображаться в полноэкранном режиме браузера.Но поскольку вы хотите показать его как iframe, вам нужно сохранить поток байтов в файл и затем указать iframe на этот файл.

<iframe src="https://www.yoursite.com/pdf/dgxedg37gd3wedb3d83vd3dgv3dt3.pdf"></iframe>

(Убедитесь, что вы сгенерировали уникальное имя для pdf)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...