将打印机 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);