我创建了一个允许用户打印节点的小型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
。
发生了什么?有什么想法吗?
答案 0 :(得分:1)
尝试使用getPrintableWidth()和getPrintableHeight()方法来检查实际边距是什么。即使您在构造函数中设置了0边距,硬件也可能会将边距限制为默认大小。
答案 1 :(得分:1)
您正面临hardware limitation issue
,即可应用于纸张的边距取决于硬件/打印机,而不仅仅是用于访问它的API
。在这种情况下,虽然JavaFX允许您将边距值传递为0
,但稍后会重新分配它们以支持打印机的最小值。
来自Javadocs:
需要知道哪些保证金值合法的客户应首先使用HARDWARE_MINIMUM保证金获取PageLayout。
如果打印机无法支持指定的布局,则会将返回的布局调整为支持的配置
您可以在创建布局时使用Printer.MarginType.HARDWARE_MINIMUM
,以检查允许的最小边距。
pageLayout = printer.createPageLayout(Paper.JAPANESE_POSTCARD,
PageOrientation.PORTRAIT, Printer.MarginType.HARDWARE_MINIMUM);