JasperReports Bild einfügen

SeeSharpNewBee

Erfahrenes Mitglied
Hi,

ich arbeite zur Zeit mit JasperReports, und habe auch schon einiges hinbekommen wie ich es haben möchte, nur bringe ich es nicht zustande oben zwischen
Code:
<page-header></page-header>
ein Bild einzufügen. Die Tutorials auf er Jasperseite hat auch nicht wirklich was gebracht.

Ich habe schon laut einer Anleitung im Internet folgendes Versucht:

Code:
		HashMap<String, Object> hm = new HashMap<String, Object>();
		java.io.File file = new File(imagePath);
		
		try {
			img = ImageIO.read(file);
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		hm.put("IMAGE", img);
		
		try {
			jasperReport = JasperCompileManager.compileReport(filePath.toString());
			
			jasperPrint = JasperFillManager.fillReport(jasperReport, hm, new JREmptyDataSource());
			
			outPut = filePath.substring(0, filePath.lastIndexOf(".")+1).toString();
			
			JasperExportManager.exportReportToPdfFile(jasperPrint, outPut+"pdf");
			
		} catch (JRException e) {
			// TODO Auto-generated catch block
			System.out.println(e.getMessage().toString());
		}

und dann in der Report.jrxml

Code:
	<parameter name="IMGAGE" class="java.lang.Object" />

	<pageHeader>
		<band height="23">
			<image scaleImage="Clip">
				<reportElement x="0" y="0" width="600" height="20"/>
				<imageExpression class="java.awt.Image"><![CDATA[ $P{IMGAGE}]]></imageExpression>
			</image>
		</band>
	</pageHeader>

aber da wird in dem Pdf file nichts angezeigt!

Bitte um Hilfe, danke!
 
Hi,

Ich binde in meine Reports Bilder ein die auch im PDF angezeigt werden. Indem ich nur den Link des Bildes oder den Pfad angebe wo es sich beim erzeugen aussieht

Code:
<image  onErrorType="Icon" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
					<reportElement
						x="0"
						y="0"
						width="133"
						height="89"
						key="image-1"/>
					<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
					<graphicElement stretchType="NoStretch"/>
					<imageExpression class="java.lang.String"><![CDATA[$P{Bildpfad}]]></imageExpression>
				</image>

Ich setze den Parameter in Java für Bildpfad mit einen Pfad ("logos\\BY.jpg");

Hoffentlich konnte ich dir weiter Helfen

MFG
Rester
 
Danke hat mir wunderbar geholfen!

Hier ist die komplette lösung:

Java-Class:
Code:
	public void doReport(String filePath, String imagePath)
	{
		String outPut = "";
		HashMap<String, Object> hm = new HashMap<String, Object>();
		java.io.File file = new File(imagePath);
		
		try {
			img = ImageIO.read(file);
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
		hm.put("Bildpfad", img);
		
		try {
			jasperReport = JasperCompileManager.compileReport(filePath.toString());
			
			jasperPrint = JasperFillManager.fillReport(jasperReport, hm, new JREmptyDataSource());
			
			outPut = filePath.substring(0, filePath.lastIndexOf(".")+1).toString();
			
			JasperExportManager.exportReportToPdfFile(jasperPrint, outPut+"pdf");
			
		} catch (JRException e) {
			// TODO Auto-generated catch block
			System.out.println(e.getMessage().toString());
		}
	}

dann das jrxml File:

Code:
	<pageHeader>
		<band height="100">
			<image  onErrorType="Icon" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
				<reportElement x="0" y="0" width="350" height="93" key="image-1"/>
				<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
				<graphicElement stretchType="NoStretch"/>
				<imageExpression class="java.awt.Image"><![CDATA[$P{Bildpfad}]]></imageExpression>
			</image>
		</band>
	</pageHeader>

und aufgerufen wird das dann so:

Code:
//Bei mir heißt die klasse "ReportEngine"

		String filePath = request.getRealPath("//reports//TestReport.jrxml");
		String imagePath = request.getRealPath("//img//testlogo.jpg");
		
		ReportEngine re = new ReportEngine();
		re.doReport(filePath,imagePath);

Danke nochmal!
 

Neue Beiträge

Zurück