我使用以下代码使用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);

08-28 22:48