1
24 package net.sf.jasperreports.components.barcode4j;
25
26 import org.apache.commons.logging.Log;
27 import org.apache.commons.logging.LogFactory;
28
29 import net.sf.jasperreports.engine.JRComponentElement;
30 import net.sf.jasperreports.engine.JRPrintElement;
31 import net.sf.jasperreports.engine.base.JRBasePrintImage;
32 import net.sf.jasperreports.engine.component.ComponentDesignConverter;
33 import net.sf.jasperreports.engine.convert.ReportConverter;
34 import net.sf.jasperreports.engine.type.ScaleImageEnum;
35 import net.sf.jasperreports.renderers.Renderable;
36
37
41 public class BarcodeDesignConverter implements ComponentDesignConverter
42 {
43
44 private static final Log log = LogFactory.getLog(BarcodeDesignConverter.class);
45
46 @Override
47 public JRPrintElement convert(ReportConverter reportConverter,
48 JRComponentElement element)
49 {
50 JRBasePrintImage printImage = new JRBasePrintImage(
51 reportConverter.getDefaultStyleProvider());
52 reportConverter.copyBaseAttributes(element, printImage);
53 printImage.setScaleImage(ScaleImageEnum.RETAIN_SHAPE);
54
55 Renderable barcodeImage = evaluateBarcode(reportConverter, element);
56 printImage.setRenderer(barcodeImage);
57
58 return printImage;
59 }
60
61 protected Renderable evaluateBarcode(ReportConverter reportConverter,
62 JRComponentElement element)
63 {
64 try
65 {
66 BarcodeDesignEvaluator evaluator =
67 new BarcodeDesignEvaluator(
68 reportConverter.getJasperReportsContext(),
69 element,
70 reportConverter.getDefaultStyleProvider()
71 );
72 return evaluator.evaluateImage();
73 }
74 catch (Exception e)
75 {
76 if (log.isWarnEnabled())
77 {
78 log.warn("Failed to create barcode preview", e);
79 }
80
81 return null;
82 }
83 }
84
85 }
86