我创建了一个小型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余量,硬件也可能将余量限制为默认大小。