`
longgangbai
  • 浏览: 7375130 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多
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+jasperReport+ireport做报表总结

    本文主要针对使用Struts2框架结合JasperReport5.0与iReport5.0进行报表开发时可能遇到的问题进行总结。 1. **报表预览问题**: - 数据源为空:确保在iReport中设置正确的数据源,可以是JavaBean、数据库连接或其他...

    利用Jasperreport+IReport进行报表开发

    JasperReport是一款开源的报表生成工具,它允许开发者创建复杂的报表,并在Java应用程序、Web应用或者独立的Java应用程序中嵌入这些报表。JasperReport支持多种数据源,包括数据库连接、XML文件、Java对象等,能够...

    原创:iReport&JasperReport开发手记(一) List报表开发与发布

    通过以上步骤,我们可以有效地利用 iReport 和 JasperReports 在 B/S 架构中实现 List 报表的开发与发布。这种方案不仅降低了成本,还提供了灵活多样的报表展示方式,提高了用户的体验。未来还可以进一步探索更多...

    iReport&JasperReport;开发手记(一)+List报表开发与发布.pdf

    ### iReport & JasperReport 开发手记:List报表开发与发布 #### 1. 概述 在B/S架构的应用程序开发中,报表处理一直是开发者面临的重要问题之一。早期的解决方案通常包括生成CSV等文件供用户下载后再进行编辑,...

    报表系统研究经验分享

    通过以上步骤,我们可以实现IReport与JasperReport的深度集成,利用IReport进行报表设计,再借助JasperReport的强大功能生成和展示报表。此过程不仅提高了报表设计的效率,也保证了报表生成的质量和灵活性。对于希望...

Global site tag (gtag.js) - Google Analytics