尝试使用Print API进行打印时 - 边距似乎不在我们的控制范围内!..请帮我设置打印机边距或有没有办法在操作系统级别设置边距。
默认情况下,所有四个左,右,上和下都设置为1.
答案 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()
命令。
答案 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);