在 Java 中打印而不更改默认打印机 - Windows 10
Print in Java without changing default printer - Windows 10
我正在使用 java 打印一些东西,我注意到我的系统范围默认打印机更改为我上次使用的打印机。这是为什么?
我的程序不应该那样做。有什么想法吗?
String printerNameDesired = "Adobe PDF";
PrintService[] service = PrinterJob.lookupPrintServices(); // list of printers
DocPrintJob docPrintJob = null;
int count = service.length;
for (int i = 0; i < count; i++)
{
if (service[i].getName().equalsIgnoreCase(printerNameDesired))
{
docPrintJob = service[i].createPrintJob();
i = count;
}
}
PrinterJob job = PrinterJob.getPrinterJob();
try
{
job.setPrintService(docPrintJob.getPrintService());
}
catch (PrinterException ex)
{
Logger.getLogger(HelloWorldPrinter.class.getName()).log(Level.SEVERE, null, ex);
}
PageFormat pf = job.defaultPage();
Paper paper = new Paper();
int margin = 0;
paper.setImageableArea(margin, margin, paper.getWidth() - margin * 2, paper.getHeight() - margin * 2);
pf.setPaper(paper);
job.setPrintable(this, pf);
//boolean ok = job.printDialog(); //ruft den auswahl-dialog auf
try
{
job.print();
}
catch (PrinterException ex)
{
Logger.getLogger(HelloWorldPrinter.class.getName()).log(Level.SEVERE, null, ex);
}
最后在 "job.print();" 中使用的打印机服务在 Windows "Devices and Printers" 中设置为默认打印机。
寻求任何帮助
这不是 Java 错误,而是 Win 10 功能,可以通过以下方式关闭:
Start(Window)Icon/Settings/Devices/Printers & scanners/Let Windows manage my
default printer: Off
或者,在德语 Windows 上:
Start(Window)Icon/Einstellungen/Geräte/Drucker & Scanner/Standarddrucker von
Windows verwalten lassen: Aus
我正在使用 java 打印一些东西,我注意到我的系统范围默认打印机更改为我上次使用的打印机。这是为什么? 我的程序不应该那样做。有什么想法吗?
String printerNameDesired = "Adobe PDF";
PrintService[] service = PrinterJob.lookupPrintServices(); // list of printers
DocPrintJob docPrintJob = null;
int count = service.length;
for (int i = 0; i < count; i++)
{
if (service[i].getName().equalsIgnoreCase(printerNameDesired))
{
docPrintJob = service[i].createPrintJob();
i = count;
}
}
PrinterJob job = PrinterJob.getPrinterJob();
try
{
job.setPrintService(docPrintJob.getPrintService());
}
catch (PrinterException ex)
{
Logger.getLogger(HelloWorldPrinter.class.getName()).log(Level.SEVERE, null, ex);
}
PageFormat pf = job.defaultPage();
Paper paper = new Paper();
int margin = 0;
paper.setImageableArea(margin, margin, paper.getWidth() - margin * 2, paper.getHeight() - margin * 2);
pf.setPaper(paper);
job.setPrintable(this, pf);
//boolean ok = job.printDialog(); //ruft den auswahl-dialog auf
try
{
job.print();
}
catch (PrinterException ex)
{
Logger.getLogger(HelloWorldPrinter.class.getName()).log(Level.SEVERE, null, ex);
}
最后在 "job.print();" 中使用的打印机服务在 Windows "Devices and Printers" 中设置为默认打印机。 寻求任何帮助
这不是 Java 错误,而是 Win 10 功能,可以通过以下方式关闭:
Start(Window)Icon/Settings/Devices/Printers & scanners/Let Windows manage my
default printer: Off
或者,在德语 Windows 上:
Start(Window)Icon/Einstellungen/Geräte/Drucker & Scanner/Standarddrucker von
Windows verwalten lassen: Aus