我正在尝试将一个非常简单的 .txt 文件输出到 HP Photosmart 喷墨打印机。按下 UI 中的按钮时会发出打印命令。它可以工作,但速度非常慢。打印机在几秒钟内取出纸张并在其屏幕上显示“正在打印”,但在实际进行打印之前需要五分钟。它必须是代码中的某些内容,因为来自其他程序的其他打印任务,即使在打印相同的 .txt 文件时,也以正常速度发生。
我的代码(仅用于打印)如下:
PrintRequestAttributeSet aset=new HashPrintRequestAttributeSet();
aset.add(OrientationRequested.LANDSCAPE);
aset.add(new Copies(1));
aset.add(Sides.DUPLEX);
aset.add(MediaSizeName.NA_LETTER);
aset.add(new NumberUp(2));
aset.add(Finishings.NONE);
FileInputStream textStream;
try{
textStream = new FileInputStream(file_name);
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc mydoc = new SimpleDoc(textStream, flavor, null);
PrintService[] services=PrintServiceLookup.lookupPrintServices(flavor, aset);
PrintService defaultService =PrintServiceLookup.lookupDefaultPrintService();
if(services.length == 0) {
if(defaultService == null) {
//no printer found
} else {
//print using default
DocPrintJob job = defaultService.createPrintJob();
try{
job.print(mydoc, aset);
}
catch(Exception err){
}
}
} else {
PrintService service = ServiceUI.printDialog(null, 200, 200, services, defaultService, flavor, aset);
if (service != null){
DocPrintJob job = service.createPrintJob();
job.print(mydoc, aset);
}
}
}
catch(Exception err){
}
现在我最终打算在热敏收据打印机上使用它,我(没有任何具体原因)认为它会更快,但即使它需要十分之一的时间,它也太长了。我的代码中有什么东西会导致这种可怕的缓慢吗?我已经修改了 MediaSizeName、Sides、INPUT_STREAM 等,要么没有效果,要么根本没有打印。有谁知道我如何加快这个过程?提前致谢!