Я пытаюсь распечатать узел из своего приложения, но распечатывается только половина ширины узла
Код:
@FXML
private void print() {
PrinterJob job = PrinterJob.createPrinterJob();
if (job != null && job.showPrintDialog(stackPane.getScene().getWindow())){
boolean success = job.printPage(stackPane);
if (success) {
job.endJob();
}
}
}
0
Peter
14 Окт 2018 в 23:33
1 ответ
Лучший ответ
Вот моя функция узла печати, в которой уже реализовано масштабирование, я не помню, откуда я это взял, если найду, я свяжу сообщение
private void printImage(Node node) {
Printer printer = Printer.getDefaultPrinter();
PageLayout pageLayout = printer.getDefaultPageLayout();
// Printable area
double pWidth = pageLayout.getPrintableWidth();
double pHeight = pageLayout.getPrintableHeight();
// Node's (Image) dimensions
double nWidth = node.getBoundsInParent().getWidth();
double nHeight = node.getBoundsInParent().getHeight();
// How much space is left? Or is the image to big?
double widthLeft = pWidth - nWidth;
double heightLeft = pHeight - nHeight;
// scale the image to fit the page in width, height or both
double scale;
if (widthLeft < heightLeft) scale = pWidth / nWidth;
else scale = pHeight / nHeight;
// preserve ratio (both values are the same)
node.getTransforms().add(new Scale(scale, scale));
PrinterJob job = PrinterJob.createPrinterJob();
if (job != null) {
boolean success = job.printPage(node);
if (success) {
System.out.println("PRINTING FINISHED");
job.endJob();
}
}
}
0
Matt
15 Окт 2018 в 13:25
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].