Pusty PDF nawet z najprostszym Jasperreport jrxml

Mam stronę EJB z glassfish 3.1 + JSF dla jasperreport 4.0.1. strona nie ma problemu z przesyłaniem strumieniowym pdf, ale wyświetla pusty PDF podczas drukowania PDF z runReportToPdfStream, poniżej znajduje się fragment kodu:

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 - prosty raport bez połączenia z 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>

Brak logowania błędu w glassfish podczas generowania tego raportu na JSF, ale wyświetlono tylko pusty plik PDF. Proszę o pomoc, daj mi znać, jeśli potrzebujesz dodatkowych informacji dla analiza.

Steven

Author: Mythox, 2011-03-10

1 answers

W końcu, JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parameterMap, new JREmptyDataSource()); rozwiązałem problem.

Cytat z Sanda z Jasperreport:

Domyślnie, gdy w raporcie nie ma informacji o źródle danych, JR nie generuje stron. Inną opcją (którą można ustawić w atrybucie raportu whenNoDataType) byłoby wydrukowanie wszystkich sekcji raportu, z wyjątkiem <detail>.

Ten raport zawiera sekcję szczegółową, ale tylko z niektórymi danymi statycznymi. Aby upewnić się, że ta sekcja również zostanie wydrukowana, najprostszym sposobem jest podanie pustych danych źródło, zawierające pojedynczy pusty rekord.

 34
Author: Mythox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-08 23:47:59