java - 如何在用java创建pdf后立即下载它

标签 java file servlets document

我正在使用java并从数据库创建一个pdf文件。 现在我想让它自动为用户下载。 当用户点击该 servlet 页面时。 这是我的一些代码...

            /* Define the SQL query */
            ResultSet rs=st.executeQuery("select Id,Name from student");
            Document my_pdf_report = new Document();
            my_pdf_report.open();            
            //we have four columns in our table
            PdfPTable my_report_table = new PdfPTable(2);
            //create a cell object
            PdfPCell table_cell;
            while (rs.next()) {                
                            String id = rs.getString("Id");
                            table_cell=new PdfPCell(new Phrase(id));
                            my_report_table.addCell(table_cell);
                            String name=rs.getString("Name");
                            table_cell=new PdfPCell(new Phrase(name));
                            }
            /* Attach report table to PDF */
            my_pdf_report.add(my_report_table);  
            Document pdf =new Document();
            pdf=my_pdf_report;
            my_pdf_report.close();
            /* Close all DB related objects */
            rs.close();
            st.close(); 
            connected.close();

最佳答案

以下是您需要放入 servlet 方法中以使文件可下载的示例代码。

   resp.setContentType("text/plain");
            resp.setHeader("Content-disposition", "attachment; filename=sample.txt"); //use your file name to be displayed when downloaded

            try(InputStream in = req.getServletContext().getResourceAsStream("/WEB-INF/sample.txt"); // location of file 
              OutputStream out = resp.getOutputStream()) {

                byte[] buffer = new byte[ARBITARY_SIZE];

                int numBytesRead;
                while ((numBytesRead = in.read(buffer)) > 0) {
                    out.write(buffer, 0, numBytesRead);
                }
            }

关于java - 如何在用java创建pdf后立即下载它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56377521/

相关文章:

java - 提取两个字符串之间的字符串,其中第二个字符串可能存在也可能不存在

java - 如何从控制台读取输入

c# - 如何在 C# 中不使用绝对路径访问/打开文件?

java - 如何在发送到 servlet 之前操作变量

java - 关闭浏览器时 session 丢失

java - Java Swing 中的线程,应用程序中三种方法的概述

java - 如何删除字符串池中未引用的值?

java - HttpServletRequest#getRemoteAddr() 返回 NULL

linux - 合并多个文件的更快方法

java - 如何读取共享位置上的文件/文件夹列表?