Javafx: печать узла на нескольких страницахJAVA

Программисты JAVA общаются здесь
Anonymous
Javafx: печать узла на нескольких страницах

Сообщение Anonymous »

Я попытался связаться с новым API печатной печати Javafx, который был представлен в JDK 8. < /p>

Рассмотрим следующую программу тестирования: < /p>

import javafx.application.Application;
import javafx.print.PrinterJob;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ToolBar;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class SimplePrintingTest extends Application {

private PrinterJob job = PrinterJob.createPrinterJob();

public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage primaryStage) {
BorderPane pane = new BorderPane();

final Rectangle rect = new Rectangle(0, 0, 1000, 1000);
pane.setCenter(rect);

final ToolBar value = new ToolBar();

final Button print = new Button("print");
final Button dialog = new Button("print dialog");
final Button pageLayout = new Button("page layout settings");
value.getItems().add(print);
value.getItems().add(dialog);
value.getItems().add(pageLayout);
print.setOnAction(event -> print(pane));
dialog.setOnAction(event -> showPrintDialog(primaryStage));
pageLayout.setOnAction(event -> showPageSetupDialog(primaryStage));

pane.setTop(value);
Scene scene = new Scene(pane, 1200, 1024, Color.GRAY);
primaryStage.setScene(scene);
primaryStage.show();
}

public void print(Node node) {
if (job != null) {
// -- ???
boolean success = job.printPage(node);
if (success) {
job.endJob();
job = PrinterJob.createPrinterJob();
}
}
}

public void showPageSetupDialog(Stage stage) {
if (job != null) {
job.showPageSetupDialog(stage);
}
}

public void showPrintDialog(Stage stage) {
if (job != null) {
job.showPrintDialog(stage);
}
}
}
< /code>

Мой вопрос сейчас: как мне настроить или использовать задание принтера, чтобы распечатать содержание сцены, которая (очевидно) слишком велика для одной страницы на нескольких страницах?job.getJobSettings().setPageRanges(new PageRange(1, 5));
< /code>

или это < /p>

job.getJobSettings().setPageRanges(new PageRange(1, 1), new PageRange(2, 2));
< /code>

или изменить диапазон страниц между вызовами Print Page, подобными этой < /p>

job.getJobSettings().setPageRanges(new PageRange(1, 1));
boolean success = job.printPage(node);
job.getJobSettings().setPageRanges(new PageRange(2, 2));
success &= job.printPage(node);
< /code>

Но, кажется, ничего не работает. Всегда только левая половина контента видна на печатном документе для каждого раз, когда я называю Print Page. Чтобы быть ясным: я не хочу масштабировать узел, который напечатан, чтобы соответствовать одной странице, я хочу сохранить размер узла и полностью распечатать его на страницах разворачивания. Это было возможно в качелях. Разве это больше невозможно в javafx?

Подробнее здесь: https://stackoverflow.com/questions/267 ... iple-pages

Вернуться в «JAVA»