我正在使用java awt PrinterJob来显示打印对话框并提交要打印的作业。我想在提交作业之前阅读用户从对话框中选择的属性,但我发现“属性”是受保护的变量,因此不确定如何访问它。我需要对正在提交的打印作业进行一些分析。这里有解决方法吗?
答案 0 :(得分:0)
而不是方法PrinterJob.printDialog()
你应该使用方法PrinterJob.printDialog(PrintRequestAttributeSet)
。
在提供的PrintRequestAttributeSet
中
您将收到用户在打印对话框中选择的所有属性。
从PrintRequestAttributeSet
开始,您可以
toArray()
方法get(Class<?>)
方法获取单个属性
(使用包中实现PrintRequestAttribute
的类
javax.print.attribute.standard
作为键。)然后,您可以通过删除或添加属性来更改PrintRequestAttributeSet
。
最后,您通过调用PrinterJob
方法提交print()
。
示例:
import java.awt.print.PrinterJob;
import javax.print.attribute.Attribute;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.*;
public static void main(String[] args) throws Exception {
PrinterJob job = PrinterJob.getPrinterJob();
PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
boolean ok = job.printDialog(attributes);
Attribute[] attributeArray = attributes.toArray();
for (Attribute a : attributeArray) {
System.out.println(a.getName() + ": " + a);
}
System.out.println();
Attribute copies = attributes.get(Copies.class);
Attribute media = attributes.get(Media.class);
Attribute mediaPrintableArea = attributes.get(MediaPrintableArea.class);
Attribute mediaTray = attributes.get(MediaTray.class);
Attribute orientationRequested = attributes.get(OrientationRequested.class);
Attribute sides = attributes.get(Sides.class);
System.out.println("copies: " + copies);
System.out.println("media: " + media);
System.out.println("mediaPrintableArea: " + mediaPrintableArea);
System.out.println("mediaTray: " + mediaTray);
System.out.println("orientationRequested: " + orientationRequested);
System.out.println("sides: " + sides);
attributes.remove(Sides.class);
attributes.add(Sides.DUPLEX);
job.print();
}
通过上面的例子,我得到了这个输出:
media: iso-a4
orientation-requested: portrait
media-printable-area: (25.4,25.4)->(159.2,246.2)mm
copies: 1
copies: 1
media: iso-a4
mediaPrintableArea: (25.4,25.4)->(159.2,246.2)mm
mediaTray: null
orientationRequested: portrait
sides: null