Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jasper报告PDF未打开_Java_Servlets_Jasper Reports - Fatal编程技术网

Java Jasper报告PDF未打开

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

我正在尝试构建一个示例web应用程序,它加载通过jasper reports(.jasper文件)生成的pdf报告。但是,报告不会以pdf格式打开,并显示消息“此pdf文档可能无法正确显示”。 代码片段如下所示。服务器日志中没有异常日志。任何帮助都会很好。谢谢

Servlet控制器类

@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());!你好!它起作用了!非常感谢!