如何在java中设置打印机边距

时间:2014-08-13 09:50:19

标签: java printing

尝试使用Print API进行打印时 - 边距似乎不在我们的控制范围内!..请帮我设置打印机边距或有没有办法在操作系统级别设置边距。

默认情况下,所有四个左,右,上和下都设置为1.

2 个答案:

答案 0 :(得分:6)

  

我使用的是Java Printing API,但在设置打印边距时遇到了问题。

     

...

     

<强>解决方案

     

我必须提供额外的打印属性来覆盖默认值   打印边距,   MediaPrintableArea

     

由于大多数打印机无法在介质的整个表面上打印   打印机硬件限制。

     

MediaPrintableArea   可用于查询假定的打印作业的可接受值,   并要求在可打印区域的约束范围内的区域   用于打印作业。

HashPrintRequestAttributeSet attr = new HashPrintRequestAttributeSet();
attr.add(new MediaPrintableArea(0f, 0f, w/72f, h/72f, MediaPrintableArea.INCH));       
PrinterJob job = PrinterJob.getPrinterJob();    
job.setPrintService(ps);
job.setPrintable(this);
job.setJobName(jobName);
job.print(attr);
j.setVisible(false);
j.dispose();
     

关键是提供属性以及print()   命令。

来源Help with print margins

答案 1 :(得分:1)

PageFormat defaultPF = printJob.defaultPage();
Paper paper = defaultPF.getPaper();
if (isPortrait)
{
    defaultPF.setOrientation(PageFormat.PORTRAIT);
    paper.setImageableArea(0, 0, defaultPF.getWidth(), defaultPF.getHeight());
}
else
{
    defaultPF.setOrientation(PageFormat.LANDSCAPE);
    paper.setImageableArea(0, 0, defaultPF.getHeight(), defaultPF.getWidth());
}
defaultPF.setPaper(paper);
defaultPF = printJob.validatePage(defaultPF);

// now dialog has margins set to minimum
PageFormat pf = printJob.pageDialog(defaultPF);