Java Jasper报告PDF未打开
我正在尝试构建一个示例web应用程序,它加载通过jasper reports(.jasper文件)生成的pdf报告。但是,报告不会以pdf格式打开,并显示消息“此pdf文档可能无法正确显示”。 代码片段如下所示。服务器日志中没有异常日志。任何帮助都会很好。谢谢 Servlet控制器类Java Jasper报告PDF未打开,java,servlets,jasper-reports,Java,Servlets,Jasper Reports,我正在尝试构建一个示例web应用程序,它加载通过jasper reports(.jasper文件)生成的pdf报告。但是,报告不会以pdf格式打开,并显示消息“此pdf文档可能无法正确显示”。 代码片段如下所示。服务器日志中没有异常日志。任何帮助都会很好。谢谢 Servlet控制器类 @WebServlet("/generateReport") public class JasperReportsExample extends HttpServlet{ final String dev
@WebServlet("/generateReport")
public class JasperReportsExample extends HttpServlet{
final String deviceJasper = "SampleReport.jasper";
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("application/pdf");
response.setCharacterEncoding("UTF-8");
try{
List<SampleReportBean> sampleReportBeanList = new ArrayList<SampleReportBean>();
SampleReportBean bean = new SampleReportBean();
bean.setName("Hello");
sampleReportBeanList.add(bean);
InputStream is = this.getClass().getClassLoader().getResourceAsStream(deviceJasper);
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(is);
JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(sampleReportBeanList);
Map<String, Object> parameters = new HashMap<String, Object>();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, beanCollectionDataSource);
JasperExportManager.exportReportToPdfFile(jasperPrint, deviceJasper);
}catch(Exception e) {
System.out.println("Error:while creating jasper report....");
e.printStackTrace();
}
}
}
@WebServlet(“/generateReport”)
公共类JasperReportsExample扩展了HttpServlet{
最终字符串设备jasper=“sampleport.jasper”;
受保护的void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出IOException、ServletException{
response.setContentType(“application/pdf”);
响应。setCharacterEncoding(“UTF-8”);
试一试{
List sampleReportBeanList=新建ArrayList();
SampleReportBean=新的SampleReportBean();
setName(“你好”);
sampleReportBeanList.add(bean);
InputStream=this.getClass().getClassLoader().getResourceAsStream(deviceJasper);
JasperReport-JasperReport=(JasperReport)JRLoader.loadObject(is);
JRBeanCollectionDataSource beanCollectionDataSource=新的JRBeanCollectionDataSource(sampleReportBeanList);
映射参数=新的HashMap();
JasperPrint JasperPrint=JasperFillManager.fillReport(jasperReport,参数,beanCollectionDataSource);
jaspeexportmanager.exportReportToPdfFile(jasperPrint,deviceJasper);
}捕获(例外e){
System.out.println(“错误:创建jasper报告时…);
e、 printStackTrace();
}
}
}
html页面
<form action="/samplejasperreport/generateReport" method="get">
<div>
<input type="submit" name="Generate Report" value="Generate Report">
</div>
</form>
sampleport.jrxml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.6.0.final using JasperReports Library version 6.6.0 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="SampleReport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="038b20ef-43f5-4f05-8318-627e403a7110">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="JavaBean Adapter"/>
<queryString>
<![CDATA[]]>
</queryString>
<field name="name" class="java.lang.String">
<fieldDescription><![CDATA[name]]></fieldDescription>
</field>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band splitType="Stretch"/>
</title>
<pageHeader>
<band splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band splitType="Stretch"/>
</columnHeader>
<detail>
<band height="31" splitType="Stretch">
<textField>
<reportElement x="150" y="0" width="140" height="30" isPrintWhenDetailOverflows="true" uuid="f6eec303-affe-4804-bb6a-e5c07516a46f"/>
<textElement textAlignment="Center">
<font size="22"/>
</textElement>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</band>
</detail>
<columnFooter>
<band splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="1" splitType="Stretch"/>
</pageFooter>
<summary>
<band splitType="Stretch"/>
</summary>
</jasperReport>
目录结构图像
<form action="/samplejasperreport/generateReport" method="get">
<div>
<input type="submit" name="Generate Report" value="Generate Report">
</div>
</form>
错误屏幕:
多亏了亚历克斯克:
JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream());//send the pdfstream to the browser
多亏了亚历克斯克:
JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream());//send the pdfstream to the browser
您是否将输出文件写入响应?看起来像,noBTW,
jaspeexportmanager.exportreporttopffile(jasperPrint,deviceJasper)代码>-这是API的错误用法@AlexK JaspeExportManager.exportReportToPdfStream(jasperPrint,response.getOutputStream());!你好!它起作用了!非常感谢!您是否将输出文件写入响应?看起来像,noBTW,jaspeexportmanager.exportreporttopffile(jasperPrint,deviceJasper)代码>-这是API的错误用法@AlexK JaspeExportManager.exportReportToPdfStream(jasperPrint,response.getOutputStream());!你好!它起作用了!非常感谢!