package javaone2013.printing; import javafx.application.Application; import javafx.event.Event; import javafx.print.PageLayout; import javafx.print.PageOrientation; import javafx.print.Paper; import javafx.print.PrintQuality; import javafx.print.Printer; import javafx.print.PrinterJob; import javafx.scene.Scene; import javafx.scene.control.Menu; import javafx.scene.control.MenuBar; import javafx.scene.control.MenuItem; import javafx.scene.image.Image; import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; import javafx.scene.paint.ImagePattern; import javafx.scene.text.Font; import javafx.scene.text.FontPosture; import javafx.scene.text.FontWeight; import javafx.scene.text.Text; import javafx.scene.text.TextAlignment; import javafx.scene.text.TextFlow; import javafx.stage.Stage; /** * User: rbair * Date: 9/17/13 * Time: 2:21 PM */ public class PrintSomeText extends Application { private Stage stage; private TextFlow flow; @Override public void start(Stage stage) throws Exception { this.stage = stage; Font normalFont = Font.font("Helvetica", 96); Font boldFont = Font.font("Helvetica", FontWeight.BOLD, 170); Font italicFont = Font.font("Helvetica", FontPosture.ITALIC, 96); Text hello = new Text("Hello "); hello.setFont(normalFont); Text bold = new Text("Bold "); bold.setFont(boldFont); bold.setFill(new ImagePattern(new Image(getClass().getResourceAsStream("texture.jpg")))); // bold.setFill(Color.RED); bold.setStroke(Color.BLACK); bold.setStrokeWidth(5); Text world = new Text("World"); world.setFont(italicFont); Menu file = new Menu("File"); MenuItem print = new MenuItem("Print"); print.setOnAction(this::print); file.getItems().add(print); MenuBar bar = new MenuBar(); bar.setUseSystemMenuBar(true); bar.getMenus().add(file); flow = new TextFlow(hello, bold, world); flow.setTextAlignment(TextAlignment.CENTER); flow.setMaxSize(TextFlow.USE_COMPUTED_SIZE, TextFlow.USE_PREF_SIZE); Scene s = new Scene(new StackPane(flow, bar), 684, 504); stage.setScene(s); stage.show(); } private void print(Event e) { // if (job != null && job.showPrintDialog(stage)) { // hangs Printer printer = Printer.getDefaultPrinter(); PageLayout pageLayout = printer.createPageLayout(Paper.NA_LETTER, PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT); PrinterJob job = PrinterJob.createPrinterJob(printer); if (job != null) { job.getJobSettings().setPageLayout(pageLayout); job.getJobSettings().setPrintQuality(PrintQuality.HIGH); boolean success = job.printPage(flow); if (success) { job.endJob(); } } } public static void main(String[] args) { launch(args); } }