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
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.
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