【问题标题】:Get raw HTML in servlet to churn out a PDF file在 servlet 中获取原始 HTML 以生成 PDF 文件
【发布时间】:2013-08-26 17:57:28
【问题描述】:

我有一个从 servlet 转发后呈现的 JSP。现在我有一个来自 JSP 的 HTML,我想发布这个页面以生成 PDF。

据我了解,提交按钮仅提交表单。但是,我需要提交原始 HTML 以最终使用 FlyingSaucer 或类似的 PDF 创建库。

使用我的 HTML 然后将 PDF 保存到文件的方法是什么?

如果我错了以及您对我的方法的看法,请纠正。任何建议将不胜感激。

编辑:抱歉,我没有发布任何代码,但目前我在 servlet 中遇到了麻烦,以解决这个问题。

【问题讨论】:

  • 一种解决方案是使用 javascript 发送您的 html 代码,您将使用 ajax 或使用表单中的隐藏字段将所有 html 文档以变量形式发送到您的 servlet
  • @FaceOfJock:请注意,无法使用 ajax 下载文件。所以返回整个 PDF 是不可能的。
  • @BalusC 我的意思是,他将传递 sourceCode,然后使用 $.POST.Servlet 的方法从他的 servlet 调用 exportPDF 方法来完成剩下的工作

标签: java html jsp servlets pdf


【解决方案1】:

你基本上有两个选择:

  1. 让 JS 在提交时将当前 HTML DOM 树设置为(隐藏的)请求参数。

    <form method="post" action="pdfservlet">
        <input type="hidden" name="source" />
        <input type="submit" value="generate" onclick="this.form.source.value = document.documentElement.outerHTML;" />
    </form>
    

    它位于pdfservlet 中,可用作request.getParameter("source")

  2. pdfservlet 使用URL/URLConnection 以编程方式请求所需的页面。

    InputStream source = new URL("http://localhost:8080/context/someservlet").openStream();
    // ...
    

    如果您需要在同一会话中运行,请使用当前会话 ID 设置 JSESSIONID cookie。

    URLConnection connection = new URL("http://localhost:8080/context/someservlet").openConnection();
    connection.setRequestProperty("Cookie", "JSESSIONID=" + request.getSession().getId());
    InputStream source = connection.getInputStream();
    // ...
    

【讨论】:

    猜你喜欢
    • 2010-11-20
    • 2010-10-08
    • 2016-11-14
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2012-03-18
    • 2014-09-29
    • 1970-01-01
    相关资源
    最近更新 更多