» »

Jasper subreport

Jasper subreport

boss-tech ::

Naredil sem poročilo v javi z jasper reports. Noter pošljem podatke in vse gre lepo. Sedaj pa bi rad naredil novo stran - subreport, vendar mi nikakor ne uspe narediti navadno novo stran z nekaj teksta. Zmeraj imam prazen bel list ali pa celo napako.
Podal sem samo kje je izvorna datoteka subreporta. A je nujno poslati kakšen data source ali parameter?

Koda:
<?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="PermitReport.jrxml" language="groovy" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
	<property name="ireport.zoom" value="1.0"/>
	<property name="ireport.x" value="0"/>
	<property name="ireport.y" value="0"/>
	<parameter name="self" class="net.sf.jasperreports.engine.JRDataSource"/>
	<field name="templateName" class="java.lang.String"/>
	<field name="firstName" class="java.lang.String"/>
	<field name="lastName" class="java.lang.String"/>
	<background>
		<band/>
	</background>
	<title>
		<band height="79"/>
	</title>
	<pageHeader>
		<band height="35"/>
	</pageHeader>
	<columnHeader>
		<band height="61">
			<textField isStretchWithOverflow="true">
				<reportElement positionType="Float" x="3" y="0" width="189" height="15"/>
				<box leftPadding="10" rightPadding="10"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA['Test 1. stran']]></textFieldExpression>
			</textField>
		</band>
	</columnHeader>
	<detail>
		<band height="239">
			<textField>
				<reportElement x="10" y="26" width="100" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{firstName}]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement x="110" y="26" width="100" height="20"/>
				<textElement/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{lastName}]]></textFieldExpression>
			</textField>
		
		<subreport>
		        <reportElement x="155" y="130" width="200" height="100"/>			
		       <subreportExpression class="java.lang.String">
                                 <![CDATA["/home/t/workspace/.../src/main/resources/Report_OUTER_subreport.jasper"]]>
                      </subreportExpression>
		</subreport>
		</band>
	</detail>
	<columnFooter>
		<band height="45"/>
	</columnFooter>
	<pageFooter>
		<band height="54"/>
	</pageFooter>
	<summary>
		<band height="42"/>
	</summary>
</jasperReport>

Spura ::

"/home/t/workspace/.../src/main/resources/Report_OUTER_subreport.jasper"

kaj je to ...?

boss-tech ::

To je pot do 2. strani reporta...jrxml izovrni xml se naloži v jasper file in tega potem podaš.

Spura ::

Hocem rect a je normalno, da so v pathu "..."? men se to zdi sumljivo.

boss-tech ::

Ma ne... to je samo skrajšava... drugače je prava pot

LeQuack ::

Jaz mam recimo tako:

				<subreport  isUsingCache="true">
					<reportElement
						x="11"
						y="239"
						width="520"
						height="27"
						key="subreport-1"/>
					<dataSourceExpression><![CDATA[$P{accreditationData}]]></dataSourceExpression>
					<subreportExpression  class="net.sf.jasperreports.engine.JasperReport"><![CDATA[$P{AccreditationSubReport}]]></subreportExpression>
				</subreport>



Sicer pa priporočam da uporabljaš iReport, ki je GUI urejevalnik za JasperReports in ti sam zgenerira te XMLe.
http://jasperforge.org/plugins/project/...
Quack !

Zgodovina sprememb…

  • spremenil: LeQuack ()

boss-tech ::

Delam v IReport in stvar je bila v tem da sem v subreportu premaknil vso vsebino iz Detail 1 Band v Summary in potem sem zagledal podatke. Kaj točno vpliva na to pa ne vem. Sedaj sem pustil tako in deluje.

Zanima pa me če kdo ve zakaj mi lokalno noče prikazati č-jev, na testnem strežniku pa vseh šumnikov?

nightrage ::

boss-tech je izjavil:

Delam v IReport in stvar je bila v tem da sem v subreportu premaknil vso vsebino iz Detail 1 Band v Summary in potem sem zagledal podatke. Kaj točno vpliva na to pa ne vem. Sedaj sem pustil tako in deluje.

Zanima pa me če kdo ve zakaj mi lokalno noče prikazati č-jev, na testnem strežniku pa vseh šumnikov?


Sem imel sam tak problem v jasperreports pa sem šumnike rešil s svojim classom. Kjerkoli v *.jrxml imaš
textField pokličeš ta class za pretvorbo encondinga. Seveda je odvisno iz kere kodne tabele pretvarjaš v katero. Class zapakiraš v jar datoteko in jo vključiš v IReport-u al pa v svoji cumstom aplikaciji.

			<textField><textFieldExpression   class="java.lang.String"><![CDATA[util.Utility.transformToCentralEuropean($F{NAME})]]></textFieldExpression>
				</textField>


package util;
import java.io.UnsupportedEncodingException;
public class Utility  {

	public static String transformToCentralEuropean(String value) {
		if (value == null) {
			return null;
		}	
		
		try {
			byte[] bytes = value.getBytes("ISO8859_1");
			return new String(bytes, "Cp1250");
		}
		catch (UnsupportedEncodingException e) {		
			e.printStackTrace();
		}
		
		return null;		
	}	
}

Zgodovina sprememb…

boss-tech ::

Hvala za odgovor. Kako pa sploh vem kakšno kodiranje imam oz kje se nastavi?

nightrage ::

Kodna tabela iz katere pretvarjaš: ISO8859_1
Kodna tabela v katero pretvarjaš: Cp1250 (poskus tudi z UTF-8)

Kako ugotoviti trenutno kodno tabelo -> http://www.rgagnon.com/javadetails/java...

boss-tech ::

A moraš naredit svoj jar ali se lahko da kar v okvir aplikacije? Ker sem videl da lahko definiraš import (java import directives) v jrxml? Kako pa je pri statičnem tekstu?

Zgodovina sprememb…

nightrage ::

Ne ni ti potrebno svojega jara delat, jaz pač za takšne utilitije dam svoj jaz. Tudi za statičen tekst lahko uporabiš potem ta klic funkcije. Upam, da ti bo ratal.

boss-tech ::

Mi je...Hvala... imam pa vprašanje glede imena pdf-ja, ki ga zgenerira. Če debugiram vidim da so v responsu vsi šumniki v imenu in vse. Ampak ko shraniš pa jih ni več.

response.setContentType(mimeType);
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachement; filename=\"" + fileName + "\"");
ServletOutputStream out = response.getOutputStream();
streamBinaryData(in, out);

Zgodovina sprememb…

nightrage ::

Najboljše bo da tvoj jasper prikažes kar v pdf-ju.
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, "parametri če jih imaš", dbConnection);
byte[] bytes = 	JasperRunManager.runReportToPdf(reportFile.getPath(),parameters,db1);		
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();	

Zgodovina sprememb…



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Davčne blagajne (strani: 1 2 3 424 25 26 27 )

Oddelek: Programiranje
1344333824 (73827) Macketina
»

[JAVA] HTTPS client

Oddelek: Programiranje
173187 (1917) peterv6i
»

[Java]Client/Server preko socketa

Oddelek: Programiranje
91797 (1633) KernelPanic
»

[Java] servlet - kako upload-at iz klienta v servlet

Oddelek: Programiranje
141741 (1647) Fizikalko
»

Java - JBoss - Servlet - getOutputStream() has already been called for this response

Oddelek: Programiranje
81066 (983) kopernik

Več podobnih tem