1 13 package org.pentaho.plugin.jfreereport.outputs; 14 15 import javax.print.DocFlavor ; 16 import javax.print.PrintException ; 17 import javax.print.PrintService ; 18 import javax.print.PrintServiceLookup ; 19 20 import org.jfree.report.JFreeReport; 21 import org.jfree.report.ReportProcessingException; 22 import org.jfree.report.ext.modules.java14print.Java14PrintUtil; 23 import org.jfree.report.modules.gui.print.PrintUtil; 24 import org.pentaho.plugin.core.StandardSettings; 25 26 31 public class JFreeReportPrintComponent extends AbstractGenerateContentComponent { 32 private static final long serialVersionUID = 3365941892457480119L; 33 34 public JFreeReportPrintComponent() { 35 } 36 37 private PrintService findPrintService(String name) { 38 final PrintService [] services = PrintServiceLookup.lookupPrintServices(DocFlavor.SERVICE_FORMATTED.PAGEABLE, null); 39 for (int i = 0; i < services.length; i++) { 40 PrintService service = services[i]; 41 if (service.getName().equals(name)) { 42 return service; 43 } 44 } 45 46 if (services.length == 0) { 47 return null; 48 } 49 return services[0]; 50 } 51 52 protected boolean performExport(final JFreeReport report) { 53 final String printerName = getInputStringValue(StandardSettings.PRINTER_NAME); 54 final Object jobName = getActionTitle(); 55 56 if (jobName instanceof String ) { 57 report.getReportConfiguration().setConfigProperty(PrintUtil.PRINTER_JOB_NAME_KEY, String.valueOf(jobName)); 58 } 59 60 final PrintService printer = findPrintService(printerName); 61 try { 62 Java14PrintUtil.printDirectly(report, printer); 63 } catch (PrintException e) { 64 return false; 65 } catch (ReportProcessingException e) { 66 return false; 67 } 68 return true; 69 } 70 } 71 | Popular Tags |