【问题标题】:How to retrieve the data from database and display in pdf format in java如何从数据库中检索数据并在java中以pdf格式显示
【发布时间】:2016-03-15 06:27:56
【问题描述】:
  1. 我想以pdf文件格式显示存储在数据库中的数据
  2. 我已经显示在网页中,而不是我想显示在 pdf 中。下面是我的代码,我用的是 MySQL 数据库

public class StockReceiptReturnQuery extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        String receiptNo = request.getParameter("ReceiptNo");
        int Rno = Integer.parseInt(receiptNo);

        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306", "root", "dinga");
            PreparedStatement ps = con.prepareStatement("select * from project.stockreceiptreturn WHERE ReceiptNO =?");
            ps.setInt(1, Rno);
            out.print("<center><table width=25% border=1></center>");
            out.print("<center><h1>StockReceiptReturnQuery:</h1></center>");
            ResultSet rs = ps.executeQuery();
            /* Printing column names */
            ResultSetMetaData rsmd = rs.getMetaData();
            while (rs.next()) {
                out.print("<tr>");
                out.print("<td>" + rsmd.getColumnName(1) + "</td>");
                out.print("<td>" + rs.getInt(1) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(2) + "</td>");
                out.print("<td>" + rs.getString(2) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(3) + "</td>");
                out.print("<td>" + rs.getString(3) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(4) + "</td>");
                out.print("<td>" + rs.getString(4) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(5) + "</td>");
                out.print("<td>" + rs.getString(5) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(6) + "</td>");
                out.print("<td>" + rs.getString(6) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(7) + "</td>");
                out.print("<td>" + rs.getInt(7) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(8) + "</td>");
                out.print("<td>" + rs.getInt(8) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(9) + "</td>");
                out.print("<td>" + rs.getString(9) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(10) + "</td>");
                out.print("<td>" + rs.getInt(10) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(11) + "</td>");
                out.print("<td>" + rs.getString(11) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(12) + "</td>");
                out.print("<td>" + rs.getDouble(12) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(13) + "</td>");
                out.print("<td>" + rs.getDouble(13) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(14) + "</td>");
                out.print("<td>" + rs.getInt(14) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(15) + "</td>");
                out.print("<td>" + rs.getInt(15) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(16) + "</td>");
                out.print("<td>" + rs.getDouble(16) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(17) + "</td>");
                out.print("<td>" + rs.getDouble(17) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(18) + "</td>");
                out.print("<td>" + rs.getDouble(18) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(19) + "</td>");
                out.print("<td>" + rs.getDouble(19) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(20) + "</td>");
                out.print("<td>" + rs.getString(20) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(21) + "</td>");
                out.print("<td>" + rs.getInt(21) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(22) + "</td>");
                out.print("<td>" + rs.getString(22) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(23) + "</td>");
                out.print("<td>" + rs.getInt(23) + "</td></tr>");
                out.print("<tr><td>" + rsmd.getColumnName(24) + "</td>");
                out.print("<td>" + rs.getInt(24) + "</td></tr>");

            }
            out.print("</table>");

        } catch (Exception e2) {
            e2.printStackTrace();
        }

        finally {
            out.close();
        }
    }
}

  • 运行 pgm 后我退出了

【问题讨论】:

  • @halfer,@Sam 请帮我解决问题
  • 每条评论只能通知一个人...我不确定您所说的 PDF 格式是什么意思,但您的代码看起来像是在编写 HTML
  • @ cricket_007,是的,我在 Html 中做过,我想在 pdf 文件中打印。
  • 给你:关于如何使用 iText 进行操作的代码示例:developers.itextpdf.com/examples/xml-worker/html-tables

标签: java mysql jsp pdf jdbc


【解决方案1】:

我建议使用某种 pdf 生成器库,这将允许您使用您的数据创建您喜欢的样式的 PDF。

通过 Google 搜索获得的库示例是 PdfBox https://pdfbox.apache.org/,但请随意使用您自己的。

您所做的一般方法是以编程方式创建一个 Pdf 文档并用您的数据填充它。通常应该有方法以您想要的格式设置 Pdf 的样式(实现将取决于您使用的库)。

您需要将文件保存在某处(无论是在您的服务器上还是在云平台上)以允许用户下载 pdf。然后在网页上将下载链接呈现给用户。

【讨论】:

  • 您可以提供代码示例而不是链接,不是吗?
  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • @cricket_007 代码取决于您选择使用的库。
  • @Teepeemm 在新编辑中提供了一些额外信息。 PdfBox 也是由 Apache 开发的,所以虽然页面内容可能会发生变化,但我认为这个库会存在一段时间
  • 所以您对“如何创建和显示 pdf?”的回答是创建一个 pdf 并将其呈现给用户吗?这对 OP 有何帮助?
猜你喜欢
  • 2018-10-07
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
  • 2020-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多