我用过这个
DocFlavor[] docFalvor = prnSvc.getSupportedDocFlavors();
for (int i = 0; i < docFalvor.length; i++) {
System.out.println(docFalvor[i].getMimeType());
}
获取我的打印机的 DocFlavor 并返回
image/gif
image/gif
image/gif
image/jpeg
image/jpeg
image/jpeg
image/png
image/png
image/png
application/x-java-jvm-local-objectref
application/x-java-jvm-local-objectref
application/octet-stream
application/octet-stream
application/octet-stream
和 m 使用
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.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.AUTOSENSE;
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);
DocFlavor[] docFalvor = services[3].getSupportedDocFlavors();
for (int i = 0; i < docFalvor.length; i++) {
System.out.println(docFalvor[i].getMimeType());
}
if (services.length > 0) {
DocPrintJob job = services[3].createPrintJob();
try
{
job.print(myDoc, aset);
} catch (PrintException pe) {
System.out.print(pe);
}
}
}
public static void main(String [] args)
{
printFile("D:/Resume.doc");
}
}
在服务数组为空时打印文件的代码??
当我通过 PrintServiceLookup.lookupPrintServices(null, null);
它返回所有可用的打印机,当我打印我的文档时它给出 javax.print.PrintException: Printer is not accepting job...
最佳答案
尝试删除和添加打印机。此外,如果 Docflavor 是 Autosense,您传递的属性集将不会生效。您要打印什么类型的文档?它在受支持的 Docflavor 中吗?如果 docflavor 不支持,则无法使用 Java Print Service API 打印 doc、pdf 等。
关于有规范问题的 Java Print 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5775740/