import java.text.SimpleDateFormat; import java.util.Date; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRImageRenderer; import net.sf.jasperreports.engine.JRPrintImage; import net.sf.jasperreports.engine.JRPrintLine; import net.sf.jasperreports.engine.JRPrintPage; import net.sf.jasperreports.engine.JRPrintText; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.base.JRBasePrintImage; import net.sf.jasperreports.engine.base.JRBasePrintLine; import net.sf.jasperreports.engine.base.JRBasePrintPage; import net.sf.jasperreports.engine.base.JRBasePrintText; import net.sf.jasperreports.engine.design.JRDesignStyle; import net.sf.jasperreports.engine.type.HorizontalAlignEnum; import net.sf.jasperreports.engine.type.ScaleImageEnum; import net.sf.jasperreports.engine.util.JRLoader; import net.sf.jasperreports.view.JasperViewer; /** * * <p>动态报表的实现<p> * * 创建日期 2013-5-3<br> * @author longgangbai<br> * @version $Revision$ 2013-5-3 * @since 3.0.0 */ public class DynamicJasperReport { /** * */ @SuppressWarnings("deprecation") private static JasperPrint getJasperPrint() throws JRException { // JasperPrint JasperPrint jasperPrint = new JasperPrint(); jasperPrint.setName("NoReport"); jasperPrint.setPageWidth(595); jasperPrint.setPageHeight(842); // Fonts JRDesignStyle normalStyle = new JRDesignStyle(); normalStyle.setName("Sans_Normal"); normalStyle.setDefault(true); normalStyle.setFontName("DejaVu Sans"); normalStyle.setFontSize(8); normalStyle.setPdfFontName("Helvetica"); normalStyle.setPdfEncoding("Cp1252"); normalStyle.setPdfEmbedded(false); jasperPrint.addStyle(normalStyle); JRDesignStyle boldStyle = new JRDesignStyle(); boldStyle.setName("Sans_Bold"); boldStyle.setFontName("DejaVu Sans"); boldStyle.setFontSize(8); boldStyle.setBold(true); boldStyle.setPdfFontName("Helvetica-Bold"); boldStyle.setPdfEncoding("Cp1252"); boldStyle.setPdfEmbedded(false); jasperPrint.addStyle(boldStyle); JRDesignStyle italicStyle = new JRDesignStyle(); italicStyle.setName("Sans_Italic"); italicStyle.setFontName("DejaVu Sans"); italicStyle.setFontSize(8); italicStyle.setItalic(true); italicStyle.setPdfFontName("STSong-Light"); italicStyle.setPdfEncoding("UniGB-UCS2-H"); italicStyle.setPdfEmbedded(true); jasperPrint.addStyle(italicStyle); JRPrintPage page = new JRBasePrintPage(); JRPrintLine line = new JRBasePrintLine(jasperPrint.getDefaultStyleProvider()); line.setX(40); line.setY(50); line.setWidth(515); line.setHeight(0); page.addElement(line); JRPrintImage image = new JRBasePrintImage(jasperPrint.getDefaultStyleProvider()); image.setX(45); image.setY(55); image.setWidth(165); image.setHeight(40); image.setScaleImage(ScaleImageEnum.CLIP); image.setRenderer(JRImageRenderer.getInstance(JRLoader.loadBytesFromResource("jasperreports.png"))); page.addElement(image); JRPrintText text = new JRBasePrintText(jasperPrint.getDefaultStyleProvider()); text.setX(210); text.setY(55); text.setWidth(345); text.setHeight(30); text.setTextHeight(text.getHeight()); text.setHorizontalAlignment(HorizontalAlignEnum.RIGHT); text.setLineSpacingFactor(1.3133681f); text.setLeadingOffset(-4.955078f); text.setStyle(boldStyle); text.setFontSize(18); text.setText("JasperReports Project Description"); page.addElement(text); text = new JRBasePrintText(jasperPrint.getDefaultStyleProvider()); text.setX(210); text.setY(85); text.setWidth(325); text.setHeight(15); text.setTextHeight(text.getHeight()); text.setHorizontalAlignment(HorizontalAlignEnum.RIGHT); text.setLineSpacingFactor(1.329241f); text.setLeadingOffset(-4.076172f); text.setStyle(italicStyle); text.setFontSize(12); text.setText((new SimpleDateFormat("yyyy年 MM月 dd日")).format(new Date())); page.addElement(text); text = new JRBasePrintText(jasperPrint.getDefaultStyleProvider()); text.setX(40); text.setY(150); text.setWidth(515); text.setHeight(200); text.setTextHeight(text.getHeight()); text.setHorizontalAlignment(HorizontalAlignEnum.JUSTIFIED); text.setLineSpacingFactor(1.329241f); text.setLeadingOffset(-4.076172f); text.setStyle(normalStyle); text.setFontSize(14); text.setText("JasperReports is a powerful report-generating tool that has the ability to deliver rich content onto the screen, to the printer or into PDF, HTML, XLS, CSV or XML files.\n\n" + "It is entirely written in Java and can be used in a variety of Java enabled applications, including J2EE or Web applications, to generate dynamic content.\n\n" + "Its main purpose is to help creating page oriented, ready to print documents in a simple and flexible manner."); page.addElement(text); jasperPrint.addPage(page); return jasperPrint; } public static void main(String[] args) throws JRException { JasperPrint jasperPrint = getJasperPrint(); JasperViewer.viewReport(jasperPrint, false); // JasperViewer view = new JasperViewer(jasperPrint, false); // view.pack(); // view.setVisible(true); } }
相关推荐
本文主要针对使用Struts2框架结合JasperReport5.0与iReport5.0进行报表开发时可能遇到的问题进行总结。 1. **报表预览问题**: - 数据源为空:确保在iReport中设置正确的数据源,可以是JavaBean、数据库连接或其他...
JasperReport是一款开源的报表生成工具,它允许开发者创建复杂的报表,并在Java应用程序、Web应用或者独立的Java应用程序中嵌入这些报表。JasperReport支持多种数据源,包括数据库连接、XML文件、Java对象等,能够...
通过以上步骤,我们可以有效地利用 iReport 和 JasperReports 在 B/S 架构中实现 List 报表的开发与发布。这种方案不仅降低了成本,还提供了灵活多样的报表展示方式,提高了用户的体验。未来还可以进一步探索更多...
### iReport & JasperReport 开发手记:List报表开发与发布 #### 1. 概述 在B/S架构的应用程序开发中,报表处理一直是开发者面临的重要问题之一。早期的解决方案通常包括生成CSV等文件供用户下载后再进行编辑,...
通过以上步骤,我们可以实现IReport与JasperReport的深度集成,利用IReport进行报表设计,再借助JasperReport的强大功能生成和展示报表。此过程不仅提高了报表设计的效率,也保证了报表生成的质量和灵活性。对于希望...