jasperreports и термопринтер

193
25 сентября 2018, 04:20

За основу взял этот пример

и решил шаблон сделать с помощью jasperreports и отдельно создал класс который работает уже с шаблоном...

List<String> list = new ArrayList<>();
    list.add("qwe");
    JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(list);
    InputStream reportPath =
            getClass().getClassLoader().getResourceAsStream("Bill.jasper");
    JasperCompileManager.compileReport(reportPath);
    jasperPrint = JasperFillManager.fillReport(reportPath, new HashMap(), beanCollectionDataSource);
    byte[] output = JasperExportManager.exportReportToPdf(jasperPrint);
    return output;

а вот когда запустил притер напечатал метровую портянку... )))) при этом ниче понятного не распечаталась...

хотя когда пользуюсь JasperViewer.viewReport(jasperPrint); то получаю то что надо вот

Answer 1

@DaysLikeThis как обещал кидаю листинг, может ещё кому то пригодитсяи кому пригодится:

try {
        List<String> list = new ArrayList<>();
        list.add("qwe");
        JRBeanCollectionDataSource ds= new JRBeanCollectionDataSource(list);
        InputStream reportPath =
                getClass().getClassLoader().getResourceAsStream("Bill1.jasper");
        System.out.println(reportPath);
        JasperPrint jasperPrint = (JasperPrint) JasperFillManager.fillReport(reportPath, new HashMap<>(), ds);
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        PageFormat pageFormat = PrinterJob.getPrinterJob().defaultPage();
        printerJob.defaultPage(pageFormat);
        int selectedService = 0;
        AttributeSet attributeSet = new HashPrintServiceAttributeSet(new PrinterName("XP-80C", null));
        PrintService[] printService = PrintServiceLookup.lookupPrintServices(null, attributeSet);
        try {
            printerJob.setPrintService(printService[selectedService]);
        } catch (Exception e) {
            System.out.println(e);
        }
        JRPrintServiceExporter exporter;
        PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
        printRequestAttributeSet.add(MediaSizeName.NA_LETTER);
        printRequestAttributeSet.add(new Copies(1));
        // these are deprecated
        exporter = new JRPrintServiceExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE, printService[selectedService]);
        exporter.setParameter(JRPrintServiceExporterParameter.PRINT_SERVICE_ATTRIBUTE_SET, printService[selectedService].getAttributes());
        exporter.setParameter(JRPrintServiceExporterParameter.PRINT_REQUEST_ATTRIBUTE_SET, printRequestAttributeSet);
        exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG, Boolean.FALSE);
        exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG, Boolean.FALSE);
        exporter.exportReport();
    } catch (JRException e) {
        e.printStackTrace();
    }

некоторые методы деприкейтед, ещё не успел исправить... если у кого нибудь будет возможность это сделать то был бы благодарен ;) спасибо за советы!

READ ALSO
Как реализовать UI как в Scratch

Как реализовать UI как в Scratch

Сегодня в Google Play наткнулся на интересную программу, конструктор, в котором были реализованы кубики (не знаю как они называются) как на картинке

173
Как сделать волнистую полоску на css?

Как сделать волнистую полоску на css?

Подскажите, как можно сделать вот такую полоску лесенкой с помощью css

212
Мобильные запросы Instagram как сгенерировать signed_body?

Мобильные запросы Instagram как сгенерировать signed_body?

У меня есть запросы в Fiddler`e там с десктоп программы отправляется

186