简体   繁体   English

Java Print程序存在规范问题?

[英]Java Print program with Specifications issues?

I used this 我用过这个

DocFlavor[] docFalvor = prnSvc.getSupportedDocFlavors();
        for (int i = 0; i < docFalvor.length; i++) {
            System.out.println(docFalvor[i].getMimeType());
        }

to get the DocFlavor of my printer and it returned 获取我的打印机的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

And m using 和米使用

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");
    }
}

code to print file bt the the services array is empty?? 代码打印文件bt,服务数组为空?

when i pass PrintServiceLookup.lookupPrintServices(null, null); 当我通过PrintServiceLookup.lookupPrintServices(null,null);

it returns all the printers available and when i print my doc it gives javax.print.PrintException: Printer is not accepting job... 它返回所有可用的打印机,当我打印文档时,它给出javax.print.PrintException:打印机不接受工作...

Try removing and adding the printer. 尝试卸下并添加打印机。 Also, the attribute set you pass won't take in effect if the Docflavor is Autosense. 另外,如果Docflavor为自动检测,则您传递的属性集将无效。 What type of document are you trying to print? 您要打印哪种类型的文档? Is it among the supported Docflavors? 它在受支持的Docflavor中吗? You cannot print doc, pdf etc using Java Print Service API if it is not supported by the docflavor. 如果docflavor不支持,则无法使用Java Print Service API打印doc,pdf等。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM