Solución:
extraiga el objeto JasperPrint del objeto Informe
y llame al método de JasperPrintManager para imprimir, lo que puede hacer que la impresión se muestre normal y
aparezca la página de la impresora PS PDF, que requiere la impresora PDF predeterminada
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;
}