将打印机 PageLayout 边距设置为零
Set Printer PageLayout margin to zero
我创建了一个允许用户打印节点的小型 Javafx 应用程序。我希望保证金为零。我在下面使用了以下代码,但没有用。
printer = javafx.print.Printer.getDefaultPrinter();
pageLayout = printer.createPageLayout(Paper.JAPANESE_POSTCARD, PageOrientation.PORTRAIT, 0.0f, 0.0f, 0.0f, 0.0f);
根据文档,createPageLayout
中的最后四个参数是边距(左、右、上、下)。我进行了打印测试,但打印文档中仍有 0.5 inch margin
。
这是怎么回事?有什么想法吗?
尝试使用 getPrintableWidth() 和 getPrintableHeight() 方法来检查实际边距是多少。即使您在构造函数中设置了 0 边距,硬件也可能会将边距限制为默认大小。
您面临 hardware limitation issue
即可以应用到 Paper 的边距取决于硬件/打印机,而不仅仅是用于访问它的 API
。在这种情况下,尽管 JavaFX 允许您将边距值作为 0
传递,但稍后会重新分配它们以支持打印机最小值。
来自Javadocs :
A client that needs to know what margin values are legal should first obtain a PageLayout using the HARDWARE_MINIMUM margins.
If the printer cannot support the layout as specified, it will adjust the returned layout to a supported configuration
您可以在创建布局时使用 Printer.MarginType.HARDWARE_MINIMUM
检查允许的最小边距。
pageLayout = printer.createPageLayout(Paper.JAPANESE_POSTCARD,
PageOrientation.PORTRAIT, Printer.MarginType.HARDWARE_MINIMUM);
我创建了一个允许用户打印节点的小型 Javafx 应用程序。我希望保证金为零。我在下面使用了以下代码,但没有用。
printer = javafx.print.Printer.getDefaultPrinter();
pageLayout = printer.createPageLayout(Paper.JAPANESE_POSTCARD, PageOrientation.PORTRAIT, 0.0f, 0.0f, 0.0f, 0.0f);
根据文档,createPageLayout
中的最后四个参数是边距(左、右、上、下)。我进行了打印测试,但打印文档中仍有 0.5 inch margin
。
这是怎么回事?有什么想法吗?
尝试使用 getPrintableWidth() 和 getPrintableHeight() 方法来检查实际边距是多少。即使您在构造函数中设置了 0 边距,硬件也可能会将边距限制为默认大小。
您面临 hardware limitation issue
即可以应用到 Paper 的边距取决于硬件/打印机,而不仅仅是用于访问它的 API
。在这种情况下,尽管 JavaFX 允许您将边距值作为 0
传递,但稍后会重新分配它们以支持打印机最小值。
来自Javadocs :
A client that needs to know what margin values are legal should first obtain a PageLayout using the HARDWARE_MINIMUM margins.
If the printer cannot support the layout as specified, it will adjust the returned layout to a supported configuration
您可以在创建布局时使用 Printer.MarginType.HARDWARE_MINIMUM
检查允许的最小边距。
pageLayout = printer.createPageLayout(Paper.JAPANESE_POSTCARD,
PageOrientation.PORTRAIT, Printer.MarginType.HARDWARE_MINIMUM);