这里我想要实现的是通过获取默认打印机打印锚定窗格,这是代码。
public class printnodeController {
@FXML
private AnchorPane print;
public void print (){
Printer printer = Printer.getDefaultPrinter();
PageLayout pageLayout
= printer.createPageLayout(Paper.A4, PageOrientation.PORTRAIT,
Printer.MarginType.HARDWARE_MINIMUM);
PrinterAttributes attr = printer.getPrinterAttributes();
PrinterJob job = PrinterJob.createPrinterJob();
double scaleX
= pageLayout.getPrintableWidth() /
print.getBoundsInParent().getWidth();
double scaleY
= pageLayout.getPrintableHeight() /
print.getBoundsInParent().getHeight();
Scale scale = new Scale(scaleX, scaleY);
print.getTransforms().add(scale);
if (job != null && job.showPrintDialog(print.getScene().getWindow())) {
boolean success = job.printPage(pageLayout, print);
if (success) {
job.endJob();
}
}
print.getTransforms().remove(scale);
}
}
但是我收到了这个错误:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389)
at
com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: java.lang.NullPointerException
at application.printnodeController.print(printnodeController.java:25)
at application.Main.main(Main.java:47)
... 11 more
Exception running application application.Main
我曾尝试搜索,但没有找到任何解决方案;请帮忙 这个网站的新用户 谢谢你提前。