当前位置: 首页 > 面试题库 >

即使使用最简单的Jasperreport jrxml,也可以显示空白PDF

公良奇
2023-03-14
问题内容

我有一个带glassfish 3.1 + JSF for jasperreport
4.0.1的EJB站点。该网站在流式pdf上没有问题,但是在使用runReportToPdfStream打印PDF时会生成空白PDF,以下是代码段:

EJB

public class BookEJB {  
    public void printReport() throws ClassNotFoundException, IOException, JRException {
        Map parameterMap = new HashMap();

        FacesContext ctx = FacesContext.getCurrentInstance();
        HttpServletResponse response = (HttpServletResponse) ctx.getExternalContext().getResponse();
        InputStream reportStream = ctx.getExternalContext().getResourceAsStream("/reports/test.jasper");

        ServletOutputStream servletOutputStream = response.getOutputStream();
        servletOutputStream.flush();

        response.setContentType("application/pdf");
        JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parameterMap);

        servletOutputStream.flush();
        servletOutputStream.close();
        ctx.responseComplete();
}}

test.jrxml- 没有SQL连接的简单报告

<?xml version="1.0" encoding="UTF-8"?>
<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="test" pageWidth="800" pageHeight="1200" columnWidth="555" leftMargin="25" rightMargin="25" topMargin="30" bottomMargin="30">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <queryString>
        <![CDATA[]]>
    </queryString>
    <pageHeader>
        <band height="100">
            <staticText>
                <reportElement x="0" y="0" width="285" height="36"/>
                <textElement>
                    <font size="24" isBold="true"/>
                </textElement>
                <text><![CDATA[Report of Testing]]></text>
            </staticText>   
        </band>
    </pageHeader>
    <detail>
        <band height="200">
            <staticText>
                <reportElement x="0" y="0" width="374" height="48"/>
                <textElement>
                    <font size="18"/>
                </textElement>
                <text><![CDATA[If you don't see this, it didn't work blah blah blah.... ]]></text>
            </staticText>
        </band>
    </detail>
    <pageFooter>
        <band height="100"/>
    </pageFooter>
</jasperReport>

在JSF上生成此报告时,在glassfish中没有错误日志,但是只显示了空白PDF。请帮助,让我知道您是否需要进一步的信息进行分析。

史蒂文


问题答案:

毕竟JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parameterMap, new JREmptyDataSource());解决了问题。

来自Jasperreport的Sanda的报价:

默认情况下,当报表中没有数据源信息时,JR不会生成页面。另一个选项(可以在报表的whenNoDataType属性中设置)是打印除以外的所有报表部分<detail>

该报告包含一个详细信息部分,但仅包含一些静态数据。为了确保也将打印此部分,最简单的方法是提供一个空数据源,其中包含一个空记录。



 类似资料:
  • 问题内容: 是否可以在每次执行循环时回显?例如: 我不想看到循环结束时打印所有内容,而是希望它每次都打印每个结果。 问题答案: 最终解决方案 这就是我发现的: Flush在Apache的mod_gzip或Nginx的gzip下不起作用,因为从逻辑上讲,它正在对内容进行gzip处理,并且这样做必须缓冲内容才能对其进行gzip处理。任何类型的Web服务器gzip压缩都会影响此。简而言之,在服务器端,我

  • 问题内容: 我不确定为什么它不显示sql语句。我之前使用过它(在较早的春天,这次我使用3) 在ApplicationContext中,我有: 在log4j中: 其他一切似乎都很好,但是它并没有显示sql。 我有想念吗? (或者是否可以从org.hibernate.cfg.Environment.getProperties()的SessionFactory打印?它没有显示show_sql,可能甚至没

  • 这个程序应该只在3D中创建一条橙色线,但似乎每次都会给我一个黑屏。我确保交换缓冲区,因为我使用的是双缓冲区,每次它通过顶点时我都会重新显示。不确定是什么问题

  • 问题内容: 我有一个映射到国家/地区实体的userAccount实体。UserAccount类中的国家/地区映射是这样的 即使将fetchmode定义为Join,hibernate也会触发单独的SQL Select来提取国家/地区。 问题答案: 删除。渴望获取将触发级联选择语句。

  • 我已经在本地机器上成功安装了 CakePHP 3。我使用WAMP服务器(http: // localhost /)。一切正常。当我通过FTP将相同的文件传输到Web服务器时 http://example.com/ cakephp 3不起作用,它会显示白色空白页。Web服务器(example.com)使用php 5.6版本。问题出在哪里?怎么了?

  • 问题内容: 我有一个带有2个表的MySql数据库: 国家是公正的。 结果是a ,a和a 。 并非所有国家/地区在每个日期都有结果。 如何创建一个查询,列出所有国家及其特定结果,但仍然列出它们,并且如果结果表上没有结果,则显示0? 问题答案: 在两个表之间使用LEFT JOIN 要显示0(对于该列),如果没有结果,请使用IFNULL。