2010-05-05 8 views
2

Mon application Java génère une image (essentiellement un organigramme) pour un rapport Jasper. Comme les organigrammes vont, il n'y a aucun moyen de déterminer la taille finale de la sortie de l'image. De plus, la sortie de l'image peut devenir trop grande, le recadrage de l'image est inutile.afficher des images vraiment énormes dans les rapports jasper

Est-il même possible que le rapport jasper redimensionne dynamiquement son élément image sans fractionner les images?

Répondre

1

Essayez ceci:

<image scaleImage="ReatinShape" hAlign="Center"> 
    <reportElement x="100" y="150" width="600" height="150"/> 
    <graphicElement/> 
    <imageExpression class="net.sf.jasperreports.engine.JRRenderable"> 
    <![CDATA[new com.onbarcode.barcode.jasper.JasperRenderer(yourImage)]]></imageExpression> 
</image> 
+0

une question stupide ... quel type de classe est le paramètre yourImage? Est-ce le chemin? ou une image buffered Je suis habitué à développer des rapports Jasper dans iReport, soit dit en passant. – xilver

+0

C'est l'objet image que vos rapports reçoivent en entrée. –

0

Je n'ai pas testé moi-même, mais il censé fonctionner. Obtenez l'élément d'image de la conception, changez sa taille, puis compilez le design modifié.

BufferedImage img = ImageIO.read(new File(wo_image_path)); 
height = img.getHeight(); 
width = img.getWidth();   
jasperSubDesign = JasperManager.loadXmlDesign(context.getRealPath("/WEB-INF/reports/decoration_sheet_header.jrxml")); 

JRDesignImage image = (JRDesignImage)jasperSubDesign.getPageHeader().getElementByKey("wo_image"); 

image.setX(3); 
image.setY(69); 
image.setHeight(new Long(height - Math.round(height*.35)).intValue()); 
image.setWidth(new Long(width - Math.round(width*.35)).intValue()); 

JasperCompileManager.compileReportToFile(jasperSubDesign, context.getRealPath("/WEB-INF/reports/decoration_sheet_header.jasper")); 

De Jasperforge

+0

Très bien! Je comprends que celui-ci * pourrait * être un sous-rapport. Si c'est le cas, y aurait-il une possibilité d'erreur si l'image dépasse réellement le rapport lui-même? – xilver

+0

Je suppose que si l'image est plus grande que le rapport, la compilation échouera. Je ne connais pas l'API de conception de Jasper, mais vous pouvez probablement redimensionner le rapport. – Guillaume

Questions connexes