Печать этикетки со штрих-кодом JavaFX в TSC ttp 244 Plus с исключением - java.lang.IllegalArgumentException: Плохие поля

Я печатаю этикетку со штрих-кодом для ювелирных изделий в TSC TTP 244 Plus из приложения JavaFX. Я получаю следующее исключение

Caused by: java.lang.IllegalArgumentException: Bad margins
at javafx.print.PageLayout.<init>(PageLayout.java:109)
at javafx.print.Printer.createPageLayout(Printer.java:307)
at javafx.print.Printer.getDefaultPageLayout(Printer.java:221)
at javafx.print.JobSettings.pageLayoutProperty(JobSettings.java:1097)
at javafx.print.JobSettings.getPageLayout(JobSettings.java:1133)
at com.sun.prism.j2d.print.J2DPrinterJob.syncPageLayout(J2DPrinterJob.java:615)
at com.sun.prism.j2d.print.J2DPrinterJob.syncSettingsToAttributes(J2DPrinterJob.java:564)
at com.sun.prism.j2d.print.J2DPrinterJob.showPrintDialog(J2DPrinterJob.java:169)
at javafx.print.PrinterJob.showPrintDialog(PrinterJob.java:299)
at com.mjstock.UI.Controllers.StockController.printBarcodeFinal(StockController.java:710) 

Проблема возникает не во всех системах Windows. Я попытался установить пользовательскую бумагу и даже попытался сделать поле равным нулю, но это не сработало. Код ниже:

    public void printBarcodeFinal(){

    double valInMM = 72.0f; 

    Screen screen = Screen.getPrimary();
    double dpi = screen.getDpi();

    System.out.println("DPI: " + dpi);
    System.out.println("VBOXDimen: Height - "+String.valueOf(vbox_new.getHeight())+", Width - "+String.valueOf(vbox_new.getWidth()));

    double paperHeight = (vbox_new.getHeight() * valInMM);
    double paperWidth = ((vbox_new.getWidth()) * valInMM);

    System.out.println("SizeInPoints: Height - "+paperHeight+", Width - "+paperWidth);

    PrinterJob job = PrinterJob.createPrinterJob();
    Printer printer = Printer.getDefaultPrinter();

    PageLayout pageLayout = printer.createPageLayout(Paper.C,PageOrientation.PORTRAIT,
            0,0,0,0);
    showLogs("PageLayoutDetails","PageLayout - "+String.valueOf(pageLayout.toString()));

    if (job != null) {
        boolean status = job.showPrintDialog(getMainApp().mainStage);
        if(status){
            job.setPrinter(printer);
            job.getJobSettings().setPageLayout(pageLayout);
            job.getJobSettings().setJobName("MJ_Stock_Barcode_Print");
            job.printPage(vbox_new);
            boolean result = job.endJob();
            if(result){
                showLogs("Status","Print Job Ended!!!");
                btnPrintFinal.setVisible(false);
                listView.setVisible(false);
                vbox_new.getChildren().clear();
                vbox_new.setVisible(false);
            }
        }
        else{
            showLogs("NoSelection","Job is cancelled");
        }
    }
}

0 ответов

Другие вопросы по тегам