将打印机的PageLayout保证金设置为零



我创建了一个小型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

发生了什么事?有什么想法吗?

您面对的是hardware limitation issue,即可以应用于纸张的边距取决于硬件/打印机,而不仅仅是用于访问它的API。在这种情况下,尽管JAVAFX允许您以0的形式传递保证金值,但随后将它们重新分配以支持打印机最小值。

来自Javadocs:

一个需要知道合法的保证金值的客户应首先使用Hardware_mimal -Mimist。

如果打印机无法按照指定的布局支持,则将返回的布局调整为受支持的配置

您可以在创建布局时使用Printer.MarginType.HARDWARE_MINIMUM,以检查允许的最小利润。

pageLayout = printer.createPageLayout(Paper.JAPANESE_POSTCARD,  
             PageOrientation.PORTRAIT, Printer.MarginType.HARDWARE_MINIMUM);

尝试使用getPrintableWidth()和getPrintableHeight()方法,以检查实际边距是什么。即使您在构造函数中设置了0余量,硬件也可能将余量限制为默认大小。

最新更新