解决方案:
从Report 对象中提取JasperPrint 对象
调用JasperPrintManager的方法进行打印,可以使得打印显示正常
PS PDF打印机页弹出, 需要PDF默认打印机
public static void printReport(Report var1) throws JRException {
// JasperPrintManager.printReport(jasperPrint, false);
ReportInfo reportInfo = var1.getReportInfo();
JasperPrint internalRepresentation = (JasperPrint) reportInfo.getInternalRepresentation();
// internalRepresentation.setPageWidth(283);
// internalRepresentation.setPageHeight(85);
boolean b = JasperPrintManager.printReport(internalRepresentation, false);
javax.print.PrintService ps = getPrintService("Urovo D7120");
JRAbstractExporter je = new JRPrintServiceExporter();
// PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
// printRequestAttributeSet.add(MediaSizeName.ISO_A4);
// SimplePrintServiceExporterConfiguration configuration = new SimplePrintServiceExporterConfiguration();
// configuration.setPrintRequestAttributeSet(printRequestAttributeSet);
// je.setExporterInput(new SimpleExporterInput(jasperPrint));
je.setParameter(JRExporterParameter.JASPER_PRINT, internalRepresentation);
// //设置指定打印机
je.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE, ps);
je.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG, false);
je.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG, false);
//打印
je.exportReport();
}
private static javax.print.PrintService getPrintService(String printName) {
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
//1份
// pras.add(new Copies(1));
DocFlavor flavor = DocFlavor.BYTE_ARRAY.PNG;
// DocFlavor flavor = DocFlavor.STRING.TEXT_HTML;
//
//可用的打印机列表(字符串数组)
javax.print.PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
if (printService != null) {
for (javax.print.PrintService p : printService) {
// System.out.println("printname="+p.getName());
if (p.getName().equals(printName)) {
return p;
}
}
}
return null;
}