Tôi đang cố hiển thị vị trí máy in trong hộp thoại. Nhưng với sự ngạc nhiên của tôi, không có dịch vụ in nào dường như có thuộc tính vị trí - mặc dù tôi đã xác minh rằng một số máy in của tôi hiển thị vị trí trong bảng điều khiển máy in của cửa sổ.Cách lấy vị trí của máy in
Tôi đã sử dụng mã này để in các vị trí (nó luôn in "null" cho vị trí). Phiên bản Java của tôi là 1.7.0_21:
public class PrintLocation {
public static void main(String[] argv) {
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
for (PrintService service : services) {
Object location = service.getAttribute(PrinterLocation.class);
System.out.println(service.getName() + " - " + location);
}
}
}
Điều này không được hỗ trợ/triển khai bởi JRE hoặc tôi có làm điều gì sai ở đây không? Làm cách nào để có được vị trí của máy in?
EDIT: Output trên máy tính của tôi là:
\\srv51\SIR-2725-01_KX_color - null
\\srv51\SIR-2725-01_KX_sw - null
Microsoft XPS Document Writer - null
Microsoft Office Document Image Writer - null
FreePDF XP - null
EDIT2: Như đã đề cập, tôi in ra tất cả các thuộc tính:
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
for (PrintService service : services) {
PrintServiceAttributeSet attrs = service.getAttributes();
System.out.println("Service: " + service.getName());
int i = 1;
for (Object attr : attrs.toArray()) {
System.out.println("Attr #" + i + ": " + attr.getClass().getSimpleName()
+ ", " + attr);
++i;
}
}
và tôi đã nhận:
Service: \\srv51\SIR-2725-01_KX_color
Attr #1: ColorSupported, supported
Attr #2: PrinterName, \\srv51\SIR-2725-01_KX_color
Attr #3: QueuedJobCount, 0
Attr #4: PrinterIsAcceptingJobs, accepting-jobs
Service: \\srv51\SIR-2725-01_KX_sw
Attr #1: ColorSupported, supported
Attr #2: PrinterName, \\srv51\SIR-2725-01_KX_sw
Attr #3: QueuedJobCount, 0
Attr #4: PrinterIsAcceptingJobs, accepting-jobs
Service: Microsoft XPS Document Writer
Attr #1: ColorSupported, supported
Attr #2: PrinterName, Microsoft XPS Document Writer
Attr #3: QueuedJobCount, 0
Attr #4: PrinterIsAcceptingJobs, accepting-jobs
Service: Microsoft Office Document Image Writer
Attr #1: ColorSupported, not-supported
Attr #2: PrinterName, Microsoft Office Document Image Writer
Attr #3: QueuedJobCount, 0
Attr #4: PrinterIsAcceptingJobs, accepting-jobs
Service: FreePDF XP
Attr #1: ColorSupported, supported
Attr #2: PrinterName, FreePDF XP
Attr #3: QueuedJobCount, 0
Attr #4: PrinterIsAcceptingJobs, accepting-jobs
Vì vậy, , hiện không có PrinterLocation cho bất kỳ máy in nào trên máy của tôi.
Thử in ra các thuộc tính sử dụng 'getAttributes()' và xem nếu 'PrinterLocation' là ở đó. – selig
@selig Ý tưởng hay, hóa ra nó thậm chí không có ở đó. – Durandal