我使用以下代码使用JSP将jasper报告导出为pdf文件。
response.setHeader("Content-Disposition", "inline; filename=\"application.pdf\"");
response.setContentType("application/pdf");
Connection con;
String host = "jdbc:mysql://localhost:3306/123";
String uname = "root";
String upass = "";
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(host, uname, upass);
String report="C:\\Users\\Acer\\Documents\\NetBeansProjects\\jasper\\1.jrxml";
JasperReport jr= JasperCompileManager.compileReport(report);
JasperPrint jasperPrint = JasperFillManager.fillReport(jr, null, con);
JasperExportManager.exportReportToPdfFile(jasperPrint, "application.pdf");
当我在NetBeans中运行此JSP文件时,浏览器中将出现一个带有以下错误的消息框:
“文件不是以'%PDF-'开头。
Local \ EWH _)!50gc#“
此消息来自Adobe Reader。
任何帮助,将不胜感激。
最佳答案
使用exportReportToPdfFile()
是完全错误的:您不想创建文件,而是导出到响应流。因此,将代码段的最后一行替换为:
OutputStream outStream = response.getOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, outStream);