解决FTPC 自带ireport对象调用打印机条码显示不全,反转,空白等问题

解决方案:
从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;
    }

猜你喜欢

转载自blog.csdn.net/oXiaoWeiWuDi/article/details/126443020
今日推荐