- import ?java.io.File; ??
- import ?java.io.FileOutputStream; ??
- import ?java.io.OutputStream; ??
- import ?java.util.ArrayList; ??
- import ?java.util.HashMap; ??
- import ?java.util.List; ??
- import ?java.util.Map; ??
- ? ??
- import ?javax.print.attribute.HashPrintRequestAttributeSet; ??
- import ?javax.print.attribute.HashPrintServiceAttributeSet; ??
- import ?javax.print.attribute.PrintRequestAttributeSet; ??
- import ?javax.print.attribute.PrintServiceAttributeSet; ??
- import ?javax.print.attribute.standard.Copies; ??
- import ?javax.print.attribute.standard.MediaSizeName; ??
- import ?javax.print.attribute.standard.PrinterName; ??
- ? ??
- import ?net.sf.jasperreports.engine.JRException; ??
- import ?net.sf.jasperreports.engine.JRExporterParameter; ??
- import ?net.sf.jasperreports.engine.JRReport; ??
- import ?net.sf.jasperreports.engine.JasperCompileManager; ??
- import ?net.sf.jasperreports.engine.JasperExportManager; ??
- import ?net.sf.jasperreports.engine.JasperFillManager; ??
- import ?net.sf.jasperreports.engine.JasperPrint; ??
- import ?net.sf.jasperreports.engine.JasperReport; ??
- import ?net.sf.jasperreports.engine.base.JRBaseLine; ??
- import ?net.sf.jasperreports.engine.base.JRBasePrintText; ??
- import ?net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; ??
- import ?net.sf.jasperreports.engine.design.JRDesignBand; ??
- import ?net.sf.jasperreports.engine.design.JRDesignExpression; ??
- import ?net.sf.jasperreports.engine.design.JRDesignField; ??
- import ?net.sf.jasperreports.engine.design.JRDesignStaticText; ??
- import ?net.sf.jasperreports.engine.design.JRDesignTextField; ??
- import ?net.sf.jasperreports.engine.design.JasperDesign; ??
- import ?net.sf.jasperreports.engine.export.JRPrintServiceExporter; ??
- import ?net.sf.jasperreports.engine.export.JRPrintServiceExporterParameter; ??
- import ?net.sf.jasperreports.engine.util.JRSaver; ??
- ? ??
- import ?org.apache.commons.beanutils.BasicDynaBean; ??
- import ?org.apache.commons.beanutils.BasicDynaClass; ??
- import ?org.apache.commons.beanutils.DynaBean; ??
- import ?org.apache.commons.beanutils.DynaProperty; ??
- import ?org.apache.commons.logging.Log; ??
- import ?org.apache.commons.logging.LogFactory; ??
- ? ??
- import ?com.inqgen.iqlis.template.jsf.bean.TemplateDirectoryAdminBean; ??
- ? ??
- /** ?
- ?*?JasperReport?動態列?打印 ?
- ?*?@author?hxy ?
- ?* ?
- ?*/ ??
- public ? class ?ReportProcess?{ ??
- ? ??
- ? private ? static ?Log?logger?=?LogFactory ??
- ???.getLog(TemplateDirectoryAdminBean. class ); ??
- ? /**?設置字段寬度?*/ ??
- ? private ? final ? static ? int ?textWidth?=? 80 ; ??
- ? /**?設置字段高度?*/ ??
- ? private ? final ? static ? int ?textHeight?=? 20 ; ??
- ? /**?coulumnHeader區域字體大小?*/ ??
- ? private ? final ? static ? int ?columnHeaderfontSize?=? 14 ; ??
- ? /**?detail?區域字體大小?*/ ??
- ? private ? final ? static ? int ?fontSize?=? 12 ; ??
- ? /**?設置間距?*/ ??
- ? private ? final ? static ? int ?X?=? 80 ; ??
- ? /**?coulumnHeader區域高度?*/ ??
- ? private ? final ? static ? int ?columnHeaderHeight?=? 20 ; ??
- ? /**?detail?區域高度?*/ ??
- ? private ? final ? static ? int ?detailHeight?=? 20 ; ??
- ? /**??*/ ??
- ? private ? static ?String?aliasColumn?=? "column" ; ??
- ? ??
- ? public ? static ? void ?main(String?args[]){ ??
- ?? try ?{ ??
- ???String[]?columns?=?{ "字段1" ,? "字段2" ,? "字段3" ,? "字段4" }; ??
- ???File?f?=? new ?File( "d://test.pdf" ); ??
- ???List<Object[]>?list?=? new ?ArrayList<Object[]>(); ??
- ???Object[]?obj?=? null ; ??
- ??? for ( int ?j= 0 ;j< 50 ;j++){ ??
- ????obj?=? new ?Object[columns.length]; ??
- ???? for ( int ?i= 0 ;i<columns.length;i++){ ??
- ?????obj[i]?=?columns[i]+j+ "," +i; ??
- ????} ??
- ????list.add(obj); ??
- ???} ??
- ???OutputStream?out?=? new ?FileOutputStream(f); ??
- ???preview(columns,?list,?out); ??
- ???out.close(); ??
- ???logger.info( "成功~" ); ??
- ??}? catch ?(Exception?e)?{ ??
- ??? //?TODO?Auto-generated?catch?block ??
- ???e.printStackTrace(); ??
- ??} ??
- ?} ??
- ? ??
- ? /** ?
- ??*?PDF打印 ?
- ??*? ?
- ??*?@param?headers ?
- ??*????????????colimnHeaders ?
- ??*?@param?list ?
- ??*????????????數據來源 ?
- ??*?@param?out ?
- ??*????????????輸出流 ?
- ??*?@throws?Exception ?
- ??*/ ??
- ? public ? static ? void ?preview(String?headers[],?List<Object[]>?list, ??
- ???OutputStream?out)? throws ?Exception?{ ??
- ?? long ?start?=?System.currentTimeMillis(); ??
- ??String[]?alias?=?preaseAliasColumnHeaders(headers); ??
- ??JasperReport?jp?=?getJasperReport(headers,?alias); ??
- ??Map<String,?Object>?parameters?=? new ?HashMap<String,Object>(); ??
- ??JasperPrint?jasperPrint?=?JasperFillManager.fillReport(jp,?parameters, ??
- ???? new ?JRBeanCollectionDataSource(getBaseList(alias,?phrase(list)))); ??
- ??logger.info( "Filling?time?:?" ?+?(System.currentTimeMillis()?-?start)); ??
- ??JasperExportManager.exportReportToPdfStream(jasperPrint,?out); ??
- ??logger.info( "Printing?time?:?" ?+?(System.currentTimeMillis()?-?start)); ??
- ?} ??
- ? ??
- ? /** ?
- ??*?打印機打印報表 ?
- ??*? ?
- ??*?@param?headers ?
- ??*????????????colimnHeaders ?
- ??*?@param?list ?
- ??*????????????數據來源 ?
- ??*?@param?parameters ?
- ??*????????????Map?參數 ?
- ??*?@param?printerName ?
- ??*????????????打印機名稱 ?
- ??*??@param?printerName ?
- ??*????????????打印機份數 ?
- ??*?@param?tempFileName ?
- ??*????????????創建報表打印臨時文件的路徑 ?
- ??*?@throws?Exception ?
- ??*/ ??
- ? public ? static ? void ?print(String?headers[],?List<Object[]>?list, ??
- ???Map<String,?Object>?parameters,?String?printerName,? int ?copies, ??
- ???String?tempFileName)? throws ?Exception?{ ??
- ?? long ?start?=?System.currentTimeMillis(); ??
- ?? /**?獲取打印報表數據?*/ ??
- ??String[]?alias?=?preaseAliasColumnHeaders(headers); ??
- ??JasperReport?jp?=?getJasperReport(headers,?alias); ??
- ??JasperPrint?jasperPrint?=?JasperFillManager.fillReport(jp,?parameters, ??
- ???? new ?JRBeanCollectionDataSource(getBaseList(alias,?phrase(list)))); ??
- ?? /**?保存向打印機發送的臨時報表數據?*/ ??
- ??JRSaver.saveObject(jasperPrint,?tempFileName); ??
- ??logger.info( "Filling?time?:?" ?+?(System.currentTimeMillis()?-?start)); ??
- ?? /**?設置打印參數?*/ ??
- ??PrintRequestAttributeSet?printRequestAttributeSet?=? new ?HashPrintRequestAttributeSet(); ??
- ?? /**?設置A4紙張?*/ ??
- ??printRequestAttributeSet.add(MediaSizeName.ISO_A4); ??
- ?? /**?設置打印份數?*/ ??
- ??printRequestAttributeSet.add( new ?Copies(copies)); ??
- ?? /**?設置打印機?*/ ??
- ??PrintServiceAttributeSet?printServiceAttributeSet?=? new ?HashPrintServiceAttributeSet(); ??
- ?? /**?添加打印機名稱?*/ ??
- ?? //?"Epson?Stylus?800?ESC/P//?2" ??
- ??printServiceAttributeSet.add( new ?PrinterName(printerName,? null )); ??
- ?? /**?打印機對象?*/ ??
- ??JRPrintServiceExporter?exporter?=? new ?JRPrintServiceExporter(); ??
- ?? /**?向打印機發送的臨時報表數據?*/ ??
- ??exporter ??
- ????.setParameter(JRExporterParameter.INPUT_FILE_NAME,?tempFileName); ??
- ??exporter.setParameter( ??
- ????JRPrintServiceExporterParameter.PRINT_REQUEST_ATTRIBUTE_SET, ??
- ????printRequestAttributeSet); ??
- ??exporter.setParameter( ??
- ????JRPrintServiceExporterParameter.PRINT_SERVICE_ATTRIBUTE_SET, ??
- ????printServiceAttributeSet); ??
- ?? /**?是否彈出打印頁數的提示對話框?*/ ??
- ??exporter.setParameter( ??
- ????JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG, ??
- ????Boolean.FALSE); ??
- ?? /**?是否彈出打印機設置屬性的提示對話框?*/ ??
- ??exporter.setParameter( ??
- ????JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG, ??
- ????Boolean.FALSE); ??
- ?? /**?執行打印機打印報表?*/ ??
- ??exporter.exportReport(); ??
- ??logger.info( "Printing?time?:?" ?+?(System.currentTimeMillis()?-?start)); ??
- ?} ??
- ? ??
- ? public ? static ?List<String[]>?phrase(List<Object[]>?list){ ??
- ??List<String[]>?temps?=? new ?ArrayList<String[]>(); ??
- ??String?[]s=? null ; ??
- ?? for (Object[]?obj?:?list){ ??
- ???s?=? new ?String[obj.length]; ??
- ??? for ( int ?i?=? 0 ;i<obj.length;i++){ ??
- ????s[i]?=?obj[i].toString(); ??
- ???} ??
- ???temps.add(s); ??
- ??} ??
- ?? return ?temps; ??
- ?} ??
- ? ??
- ? /** ?
- ??*?產生columnHeaders的別名(Headers[]有可能為中文,所以有必要用別名來替換) ?
- ??*? ?
- ??*?@param?headers ?
- ??*?@return ?
- ??*/ ??
- ? private ? static ?String[]?preaseAliasColumnHeaders(String?headers[])?{ ??
- ?? int ?size?=?headers.length; ??
- ??String[]?alias?=? new ?String[size]; ??
- ?? for ?( int ?i?=? 0 ;?i?<?size;?i++)?{ ??
- ???alias[i]?=?aliasColumn?+?i; ??
- ??} ??
- ?? return ?alias; ??
- ?} ??
- ? ??
- ? /** ?
- ??*?產生Template文件 ?
- ??*? ?
- ??*?@param?headers ?
- ??*?@param?alias ?
- ??*?@return ?
- ??*?@throws?JRException ?
- ??*/ ??
- ? @SuppressWarnings ( "deprecation" ) ??
- ? private ? static ?JasperReport?getJasperReport(String[]?headers, ??
- ???String?alias[])? throws ?JRException?{ ??
- ??JasperDesign?design?=? new ?JasperDesign(); ??
- ? ??
- ?? //?name="statistics" ??
- ??design.setName( "statistics" ); ??
- ?? //?columnCount="1" ??
- ?? //?printOrder="Vertical" ??
- ??design.setPrintOrder(JRReport.PRINT_ORDER_VERTICAL); ??
- ?? //?orientation="Portrait" ??
- ??design.setOrientation(JRReport.ORIENTATION_PORTRAIT); ??
- ?? //?pageWidth="595" ??
- ??design.setPageWidth( 595 ); ??
- ?? //?pageHeight="842" ??
- ??design.setPageHeight( 842 ); ??
- ?? //?columnWidth="535" ??
- ??design.setColumnWidth( 535 ); ??
- ?? //?columnSpacing="0" ??
- ??design.setColumnSpacing( 0 ); ??
- ?? //?leftMargin="30" ??
- ??design.setLeftMargin( 30 ); ??
- ?? //?rightMargin="30" ??
- ??design.setRightMargin( 30 ); ??
- ?? //?topMargin="20" ??
- ??design.setTopMargin( 20 ); ??
- ?? //?bottomMargin="20" ??
- ??design.setBottomMargin( 20 ); ??
- ?? //?whenNoDataType="NoPages" ??
- ??design.setWhenNoDataType(JRReport.WHEN_NO_DATA_TYPE_BLANK_PAGE); ??
- ?? //?isTitleNewPage="false" ??
- ??design.setTitleNewPage( false ); ??
- ?? //?isSummaryNewPage="false" ??
- ??design.setSummaryNewPage( false ); ??
- ? ??
- ?? //?JRDesignBand?title?=?new?JRDesignBand(); ??
- ?? //?title.setHeight(50); ??
- ?? //?JRDesignStaticText?titleText?=?new?JRDesignStaticText(); ??
- ?? //?titleText.setText("test?report"); ??
- ?? //?titleText.setX(230); ??
- ?? //?titleText.setFontSize(20); ??
- ?? //?titleText.setHeight(50); ??
- ?? //?titleText.setWidth(100); ??
- ?? //?title.addElement(titleText); ??
- ?? //?design.setTitle(title); ??
- ??JRDesignBand?columnHeader?=? new ?JRDesignBand(); ??
- ??columnHeader.setHeight(columnHeaderHeight); ??
- ? ??
- ??JRDesignBand?detail?=? new ?JRDesignBand(); ??
- ??detail.setHeight(detailHeight); ??
- ? ??
- ?? for ?( int ?i?=? 0 ;?i?<?headers.length;?i++)?{ ??
- ??? //?add?column?headers ??
- ???JRDesignStaticText?staticText?=? new ?JRDesignStaticText(); ??
- ???staticText.setText(headers[i]); ??
- ???staticText.setFontSize(columnHeaderfontSize); ??
- ???staticText.setHeight(textHeight); ??
- ???staticText.setWidth(textWidth); ??
- ???staticText.setX(X?*?i); ??
- ???staticText.setPdfFontName( "MHei-Medium" ); ??
- ???staticText.setPdfEmbedded( true ); ??
- ???staticText.setPdfEncoding( "UniCNS-UCS2-H" ); ??
- ???staticText.setTextAlignment(JRBasePrintText.HORIZONTAL_ALIGN_CENTER); ??
- ???staticText.setLeftBorder(JRBaseLine.PEN_1_POINT); ??
- ???staticText.setTopBorder(JRBaseLine.PEN_1_POINT); ??
- ???staticText.setRightBorder(JRBaseLine.PEN_1_POINT); ??
- ???staticText.setBottomBorder(JRBaseLine.PEN_1_POINT); ??
- ???columnHeader.addElement(staticText); ??
- ? ??
- ??? //?define?fields ??
- ???JRDesignField?field?=? new ?JRDesignField(); ??
- ???field.setName(alias[i]); ??
- ???field.setValueClass(String. class ); ??
- ???design.addField(field); ??
- ? ??
- ??? //?add?text?fields?for?displaying?fields ??
- ???JRDesignTextField?textField?=? new ?JRDesignTextField(); ??
- ???JRDesignExpression?expression?=? new ?JRDesignExpression(); ??
- ???expression.setText( "$F{" ?+?alias[i]?+? "}" ); ??
- ???expression.setValueClass(String. class ); ??
- ???textField.setExpression(expression); ??
- ???textField.setFontSize(fontSize); ??
- ???textField.setHeight(textHeight); ??
- ???textField.setWidth(textWidth); ??
- ???textField.setX(X?*?i); ??
- ???textField.setPdfFontName( "MHei-Medium" ); ??
- ???textField.setPdfEmbedded( true ); ??
- ???textField.setPdfEncoding( "UniCNS-UCS2-H" ); ??
- ???textField.setTextAlignment(JRBasePrintText.HORIZONTAL_ALIGN_CENTER); ??
- ???textField.setLeftBorder(JRBaseLine.PEN_1_POINT); ??
- ???textField.setTopBorder(JRBaseLine.PEN_1_POINT); ??
- ???textField.setRightBorder(JRBaseLine.PEN_1_POINT); ??
- ???textField.setBottomBorder(JRBaseLine.PEN_1_POINT); ??
- ???detail.addElement(textField); ??
- ??} ??
- ??design.setColumnHeader(columnHeader); ??
- ??design.setDetail(detail); ??
- ? ??
- ?? return ?JasperCompileManager.compileReport(design); ??
- ?} ??
- ? ??
- ? /** ?
- ??*?利用反射機制,裝拼數據 ?
- ??*? ?
- ??*?@param?headers ?
- ??*?@param?list ?
- ??*?@return ?
- ??*?@throws?Exception ?
- ??*/ ??
- ? private ? static ?List<Object>?getBaseList(String[]?headers, ??
- ???List<String[]>?list)? throws ?Exception?{ ??
- ??List<Object>?result?=? new ?ArrayList<Object>(); ??
- ?? int ?length?=?headers.length; ??
- ??DynaProperty[]?dynaProps?=? new ?DynaProperty[length]; ??
- ?? for ?( int ?i?=? 0 ;?i?<?length;?i++)?{ ??
- ???dynaProps[i]?=? new ?DynaProperty(headers[i],?String. class ); ??
- ??} ??
- ??BasicDynaClass?dynaClass?=? new ?BasicDynaClass( "first" , ??
- ????BasicDynaBean. class ,?dynaProps); ??
- ?? for ?(Object[]?obj?:?list)?{ ??
- ???DynaBean?employee?=?dynaClass.newInstance(); ??
- ??? for ?( int ?i?=? 0 ;?i?<?length;?i++)?{ ??
- ????employee.set(headers[i],?obj[i]); ??
- ???} ??
- ???result.add(employee); ??
- ??} ??
- ?? return ?result; ??
- ?} ??
- ? ??
- }??
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.HashPrintServiceAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.PrintServiceAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.MediaSizeName;
import javax.print.attribute.standard.PrinterName;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JRReport;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.base.JRBaseLine;
import net.sf.jasperreports.engine.base.JRBasePrintText;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.design.JRDesignBand;
import net.sf.jasperreports.engine.design.JRDesignExpression;
import net.sf.jasperreports.engine.design.JRDesignField;
import net.sf.jasperreports.engine.design.JRDesignStaticText;
import net.sf.jasperreports.engine.design.JRDesignTextField;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.export.JRPrintServiceExporter;
import net.sf.jasperreports.engine.export.JRPrintServiceExporterParameter;
import net.sf.jasperreports.engine.util.JRSaver;
import org.apache.commons.beanutils.BasicDynaBean;
import org.apache.commons.beanutils.BasicDynaClass;
import org.apache.commons.beanutils.DynaBean;
import org.apache.commons.beanutils.DynaProperty;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.inqgen.iqlis.template.jsf.bean.TemplateDirectoryAdminBean;
/**
* JasperReport 動態列 打印
* @author hxy
*
*/
public class ReportProcess {
private static Log logger = LogFactory
.getLog(TemplateDirectoryAdminBean.class);
/** 設置字段寬度 */
private final static int textWidth = 80;
/** 設置字段高度 */
private final static int textHeight = 20;
/** coulumnHeader區域字體大小 */
private final static int columnHeaderfontSize = 14;
/** detail 區域字體大小 */
private final static int fontSize = 12;
/** 設置間距 */
private final static int X = 80;
/** coulumnHeader區域高度 */
private final static int columnHeaderHeight = 20;
/** detail 區域高度 */
private final static int detailHeight = 20;
/** */
private static String aliasColumn = "column";
public static void main(String args[]){
try {
String[] columns = {"字段1", "字段2", "字段3", "字段4"};
File f = new File("d://test.pdf");
List<Object[]> list = new ArrayList<Object[]>();
Object[] obj = null;
for(int j=0;j<50;j++){
obj = new Object[columns.length];
for(int i=0;i<columns.length;i++){
obj[i] = columns[i]+j+","+i;
}
list.add(obj);
}
OutputStream out = new FileOutputStream(f);
preview(columns, list, out);
out.close();
logger.info("成功~");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* PDF打印
*
* @param headers
* colimnHeaders
* @param list
* 數據來源
* @param out
* 輸出流
* @throws Exception
*/
public static void preview(String headers[], List<Object[]> list,
OutputStream out) throws Exception {
long start = System.currentTimeMillis();
String[] alias = preaseAliasColumnHeaders(headers);
JasperReport jp = getJasperReport(headers, alias);
Map<String, Object> parameters = new HashMap<String,Object>();
JasperPrint jasperPrint = JasperFillManager.fillReport(jp, parameters,
new JRBeanCollectionDataSource(getBaseList(alias, phrase(list))));
logger.info("Filling time : " + (System.currentTimeMillis() - start));
JasperExportManager.exportReportToPdfStream(jasperPrint, out);
logger.info("Printing time : " + (System.currentTimeMillis() - start));
}
/**
* 打印機打印報表
*
* @param headers
* colimnHeaders
* @param list
* 數據來源
* @param parameters
* Map 參數
* @param printerName
* 打印機名稱
* @param printerName
* 打印機份數
* @param tempFileName
* 創建報表打印臨時文件的路徑
* @throws Exception
*/
public static void print(String headers[], List<Object[]> list,
Map<String, Object> parameters, String printerName, int copies,
String tempFileName) throws Exception {
long start = System.currentTimeMillis();
/** 獲取打印報表數據 */
String[] alias = preaseAliasColumnHeaders(headers);
JasperReport jp = getJasperReport(headers, alias);
JasperPrint jasperPrint = JasperFillManager.fillReport(jp, parameters,
new JRBeanCollectionDataSource(getBaseList(alias, phrase(list))));
/** 保存向打印機發送的臨時報表數據 */
JRSaver.saveObject(jasperPrint, tempFileName);
logger.info("Filling time : " + (System.currentTimeMillis() - start));
/** 設置打印參數 */
PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
/** 設置A4紙張 */
printRequestAttributeSet.add(MediaSizeName.ISO_A4);
/** 設置打印份數 */
printRequestAttributeSet.add(new Copies(copies));
/** 設置打印機 */
PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
/** 添加打印機名稱 */
// "Epson Stylus 800 ESC/P// 2"
printServiceAttributeSet.add(new PrinterName(printerName, null));
/** 打印機對象 */
JRPrintServiceExporter exporter = new JRPrintServiceExporter();
/** 向打印機發送的臨時報表數據 */
exporter
.setParameter(JRExporterParameter.INPUT_FILE_NAME, tempFileName);
exporter.setParameter(
JRPrintServiceExporterParameter.PRINT_REQUEST_ATTRIBUTE_SET,
printRequestAttributeSet);
exporter.setParameter(
JRPrintServiceExporterParameter.PRINT_SERVICE_ATTRIBUTE_SET,
printServiceAttributeSet);
/** 是否彈出打印頁數的提示對話框 */
exporter.setParameter(
JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG,
Boolean.FALSE);
/** 是否彈出打印機設置屬性的提示對話框 */
exporter.setParameter(
JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG,
Boolean.FALSE);
/** 執行打印機打印報表 */
exporter.exportReport();
logger.info("Printing time : " + (System.currentTimeMillis() - start));
}
public static List<String[]> phrase(List<Object[]> list){
List<String[]> temps = new ArrayList<String[]>();
String []s= null;
for(Object[] obj : list){
s = new String[obj.length];
for(int i = 0;i<obj.length;i++){
s[i] = obj[i].toString();
}
temps.add(s);
}
return temps;
}
/**
* 產生columnHeaders的別名(Headers[]有可能為中文,所以有必要用別名來替換)
*
* @param headers
* @return
*/
private static String[] preaseAliasColumnHeaders(String headers[]) {
int size = headers.length;
String[] alias = new String[size];
for (int i = 0; i < size; i++) {
alias[i] = aliasColumn + i;
}
return alias;
}
/**
* 產生Template文件
*
* @param headers
* @param alias
* @return
* @throws JRException
*/
@SuppressWarnings("deprecation")
private static JasperReport getJasperReport(String[] headers,
String alias[]) throws JRException {
JasperDesign design = new JasperDesign();
// name="statistics"
design.setName("statistics");
// columnCount="1"
// printOrder="Vertical"
design.setPrintOrder(JRReport.PRINT_ORDER_VERTICAL);
// orientation="Portrait"
design.setOrientation(JRReport.ORIENTATION_PORTRAIT);
// pageWidth="595"
design.setPageWidth(595);
// pageHeight="842"
design.setPageHeight(842);
// columnWidth="535"
design.setColumnWidth(535);
// columnSpacing="0"
design.setColumnSpacing(0);
// leftMargin="30"
design.setLeftMargin(30);
// rightMargin="30"
design.setRightMargin(30);
// topMargin="20"
design.setTopMargin(20);
// bottomMargin="20"
design.setBottomMargin(20);
// whenNoDataType="NoPages"
design.setWhenNoDataType(JRReport.WHEN_NO_DATA_TYPE_BLANK_PAGE);
// isTitleNewPage="false"
design.setTitleNewPage(false);
// isSummaryNewPage="false"
design.setSummaryNewPage(false);
// JRDesignBand title = new JRDesignBand();
// title.setHeight(50);
// JRDesignStaticText titleText = new JRDesignStaticText();
// titleText.setText("test report");
// titleText.setX(230);
// titleText.setFontSize(20);
// titleText.setHeight(50);
// titleText.setWidth(100);
// title.addElement(titleText);
// design.setTitle(title);
JRDesignBand columnHeader = new JRDesignBand();
columnHeader.setHeight(columnHeaderHeight);
JRDesignBand detail = new JRDesignBand();
detail.setHeight(detailHeight);
for (int i = 0; i < headers.length; i++) {
// add column headers
JRDesignStaticText staticText = new JRDesignStaticText();
staticText.setText(headers[i]);
staticText.setFontSize(columnHeaderfontSize);
staticText.setHeight(textHeight);
staticText.setWidth(textWidth);
staticText.setX(X * i);
staticText.setPdfFontName("MHei-Medium");
staticText.setPdfEmbedded(true);
staticText.setPdfEncoding("UniCNS-UCS2-H");
staticText.setTextAlignment(JRBasePrintText.HORIZONTAL_ALIGN_CENTER);
staticText.setLeftBorder(JRBaseLine.PEN_1_POINT);
staticText.setTopBorder(JRBaseLine.PEN_1_POINT);
staticText.setRightBorder(JRBaseLine.PEN_1_POINT);
staticText.setBottomBorder(JRBaseLine.PEN_1_POINT);
columnHeader.addElement(staticText);
// define fields
JRDesignField field = new JRDesignField();
field.setName(alias[i]);
field.setValueClass(String.class);
design.addField(field);
// add text fields for displaying fields
JRDesignTextField textField = new JRDesignTextField();
JRDesignExpression expression = new JRDesignExpression();
expression.setText("$F{" + alias[i] + "}");
expression.setValueClass(String.class);
textField.setExpression(expression);
textField.setFontSize(fontSize);
textField.setHeight(textHeight);
textField.setWidth(textWidth);
textField.setX(X * i);
textField.setPdfFontName("MHei-Medium");
textField.setPdfEmbedded(true);
textField.setPdfEncoding("UniCNS-UCS2-H");
textField.setTextAlignment(JRBasePrintText.HORIZONTAL_ALIGN_CENTER);
textField.setLeftBorder(JRBaseLine.PEN_1_POINT);
textField.setTopBorder(JRBaseLine.PEN_1_POINT);
textField.setRightBorder(JRBaseLine.PEN_1_POINT);
textField.setBottomBorder(JRBaseLine.PEN_1_POINT);
detail.addElement(textField);
}
design.setColumnHeader(columnHeader);
design.setDetail(detail);
return JasperCompileManager.compileReport(design);
}
/**
* 利用反射機制,裝拼數據
*
* @param headers
* @param list
* @return
* @throws Exception
*/
private static List<Object> getBaseList(String[] headers,
List<String[]> list) throws Exception {
List<Object> result = new ArrayList<Object>();
int length = headers.length;
DynaProperty[] dynaProps = new DynaProperty[length];
for (int i = 0; i < length; i++) {
dynaProps[i] = new DynaProperty(headers[i], String.class);
}
BasicDynaClass dynaClass = new BasicDynaClass("first",
BasicDynaBean.class, dynaProps);
for (Object[] obj : list) {
DynaBean employee = dynaClass.newInstance();
for (int i = 0; i < length; i++) {
employee.set(headers[i], obj[i]);
}
result.add(employee);
}
return result;
}
}
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

