Solve the problems of incomplete display, inversion, and blank barcode when the ireport object of FTPC is used to call the printer

Solution:
extract the JasperPrint object from the Report object
and call the method of JasperPrintManager to print, which can make the print display normal and
the PS PDF printer page pops up, which requires the default PDF printer

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;
    }

Guess you like

Origin blog.csdn.net/oXiaoWeiWuDi/article/details/126443020