打印机服务未找到?
当我调试这个程序的服务数组是空的?打印机服务未找到?
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.MediaSize;
import javax.print.attribute.standard.Sides;
public class PrintFileWithSpec {
public static void printFile(String filename){
FileInputStream psStream=null;
try {
psStream = new FileInputStream(filename);
} catch (FileNotFoundException ffne) {
}
if (psStream == null) {
return;
}
DocFlavor psInFormat = DocFlavor.INPUT_STREAM.POSTSCRIPT;
Doc myDoc = new SimpleDoc(psStream, psInFormat, null);
PrintRequestAttributeSet aset =
new HashPrintRequestAttributeSet();
aset.add(new Copies(5));
//aset.add(MediaSize.ISO_A4);
aset.add(Sides.DUPLEX);
PrintService[] services =
PrintServiceLookup.lookupPrintServices(psInFormat, aset);
if (services.length > 0) {
DocPrintJob job = services[0].createPrintJob();
try
{
job.print(myDoc, aset);
} catch (PrintException pe) {}
}
}
public static void main(String [] args){
printFile("D:/Resume.doc");
}
}
这是因为没有找到对应于指定的DocFlavor和属性集的PrintService。可能很难找到支持PostScript的打印机,除非您的打印机硬件相当新。您可以检查什么都DocFlavors都是这样的支持:
对于定位特定的打印服务,你可以做这样的事情:
PrintService prnSvc = null;
/* locate a print service that can handle it */
PrintService[] pservices =
PrintServiceLookup.lookupPrintServices(null, null);
if (pservices.length > 0) {
int ii=0;
while(ii < pservices.length)
{
System.out.println("Named Printer found: "+pservices[ii].getName());
if (pservices[ii].getName().endsWith("YourPrinterName")) {
prnSvc = pservices[ii];
System.out.println("Named Printer selected: " + pservices[ii].getName() + "*");
break;
}
ii++;
}
我得到了docFlavor的以下输出,所以我的打印输出.txt,.pdf,doc等?图像/ GIF 图像/ GIF 图像/ GIF 图像/ JPEG 图像/ JPEG 图像/ JPEG 图像/ PNG 图像/ PNG 图像/ PNG 应用程序/ x-java的JVM-本地objectref 应用/ x-java-jvm-local-objectref application/octet-stream application/octet-stream application/octet-stream – Harinder 2011-04-25 05:23:59
请看看发生的事情.http://stackoverflow.com/q/5775740/689853 – Harinder 2011-04-25 06:13:36
这似乎是在指定的属性'aset'有点限制太多 - 当我通过'null'时,它对我有用。 – AbdullahC 2011-04-21 09:35:28
那我该怎么办? – Harinder 2011-04-21 09:40:33
我通过null而不是一个仍然相同的问题 – Harinder 2011-04-21 09:41:41