tomee4hobbysign/tools/ForceCupsTest.java

48 lines
2.1 KiB
Java

import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import java.lang.reflect.Method;
public class ForceCupsTest {
public static void main(String[] args) throws Exception {
System.out.println("=== Forcing CUPS Print Service ===");
// Set system properties to force CUPS
System.setProperty("java.awt.printerjob", "sun.print.CUPSPrinterJob");
System.setProperty("sun.print.printservice", "sun.print.CUPSPrintService");
System.out.println("Properties set:");
System.out.println(" java.awt.printerjob=" + System.getProperty("java.awt.printerjob"));
System.out.println(" sun.print.printservice=" + System.getProperty("sun.print.printservice"));
// Try to load CUPS classes
try {
Class<?> cupsPrinterJobClass = Class.forName("sun.print.CUPSPrinterJob");
System.out.println("CUPSPrinterJob class found: " + cupsPrinterJobClass);
// Create instance
Object cupsPrinterJob = cupsPrinterJobClass.getDeclaredConstructor().newInstance();
System.out.println("CUPSPrinterJob instance created");
} catch (ClassNotFoundException e) {
System.out.println("CUPSPrinterJob not found. Trying PSPrinterJob...");
try {
Class<?> psPrinterJobClass = Class.forName("sun.print.PSPrinterJob");
System.out.println("PSPrinterJob class found: " + psPrinterJobClass);
} catch (ClassNotFoundException e2) {
System.out.println("PSPrinterJob also not found");
}
}
// Now try to get printers
System.out.println("\nLooking for printers...");
PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
System.out.println("Found " + services.length + " print service(s)");
for (PrintService service : services) {
System.out.println("Service: " + service.getName());
System.out.println(" Class: " + service.getClass().getName());
}
}
}