public void run() { PrinterJob job = PrinterJob.createPrinterJob(); if (job != null && job.showPrintDialog(null)) { WebView webView = getWebView(); PageLayout pageLayout = job.getPrinter().getDefaultPageLayout(); double scaleX = pageLayout.getPrintableWidth() / webView.getBoundsInParent().getWidth(); double scaleY = pageLayout.getPrintableHeight() / webView.getBoundsInParent().getHeight(); double minimumScale = min(scaleX, scaleY); Scale scale = new Scale(minimumScale, minimumScale); try { webView.getTransforms().add(scale); boolean success = job.printPage(webView); if (success) job.endJob(); } finally { webView.getTransforms().remove(scale); Group group = new Group(); group.getChildren().add(webView); getPanel().setScene(new Scene(group)); } } } });