48 lines
2.1 KiB
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());
|
|
}
|
|
}
|
|
}
|