将Printer PageLayout边距设置为零

时间:2015-05-13 05:08:55

标签: java javafx javafx-8

我创建了一个允许用户打印节点的小型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

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

2 个答案:

答案 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);