EclipseRCP打印表格

EclipseRCP打印表格
    做过RCP项目的朋友应该都遇到过打印的问题,在C/S构架中打印应该是最麻烦的事情。SWT提供的打印功能很简单,特别是在做表格打印的时候,需要大家使用GC自己绘出来,才能打印,对于初级的开发人员和人力不足的公司来说是非常麻烦的事情。
   还好ceclipse.org的老大yipsilon zheng贡献出了一个SWT表格打印的项目,可以做到不同表格的直接打印,而且还有跨行跨列的实现,我改造了一下(把项目做了个转码utf-8==》GBK),然后打成JAR包放上来给大家使用。
 1 package  com.glnpu.dmp.client.platform.core.internal.util;
 2
 3 import  org.ceclipse.reporting.IReport;
 4 import  org.ceclipse.reporting.IReportPage;
 5 import  org.ceclipse.reporting.Report;
 6 import  org.ceclipse.reporting.ReportData;
 7 import  org.ceclipse.reporting.ReportUtil;
 8 import  org.eclipse.nebula.widgets.grid.Grid;
 9 import  org.eclipse.swt.printing.PrintDialog;
10 import  org.eclipse.swt.printing.Printer;
11 import  org.eclipse.swt.widgets.Table;
12 import  org.eclipse.ui.PlatformUI;
13
14 /** */ /**
15 * 通用表格打印组件,目前提供两个方法分别用于打印表格(Gird,Table);
16 * 工作任务名:printContent
17 * @author lign
18 *
19 */

20 public   class  PrintContent  {
21
22    /** *//**
23     * 对Gird进行打印操作
24     * @param grid SWT 的nebula项目的Grid
25     * @param title 表头文字描述
26     */

27    public static void printGird(Grid grid, String title) {
28        IReportPage page = ReportUtil.convert(grid, title);
29        Report report = new Report();
30        report.addPage(page);
31        printToPrinter(report);
32        
33    }

34    
35    /** *//**
36     * 对Table进行打印操作
37     * @param table SWT 的Table
38     * @param title 表头文字描述
39     */

40    public static void printTable(Table table, String title) {
41        IReportPage page = ReportUtil.convert(table, title);
42        Report report = new Report();
43        report.addPage(page);
44        printToPrinter(report);
45        
46    }

47    
48    /** *//**
49     * 处理打印以及调用Printer
50     * @param report
51     */

52    private static void printToPrinter(IReport report) {
53         ReportData reportData = report.getReportData();
54         reportData.setJobName("printContent");
55         reportData.setPrinter(new Printer(new PrintDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()).open()));
56         report.print();
57    }

58}

59
我封装了两个方法,一个方法处理SWT提供的Table的打印,另一个处理SWT-星云(Nebula)-Gird的打印,基本上满足我的需要了。
Jar下载:
http://www.blogjava.net/Files/leeguannan/org.ceclipse.printer_1.0.rar

客户虐我千百遍,我待客户如初恋!

你可能感兴趣的:(EclipseRCP打印表格)