有规范问题的 Java Print 程序?

标签 java printing

我用过这个

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/

相关文章:

Java - 一般处理子类的创建

java - 为什么使用 StringBuffer.reverse 后 equals() 为真?

css - 这个打印样式表是如何工作的?

wpf - 如何打印wpf窗口而不将其显示在屏幕上?

java - 玩 Framework 2.0 和 EBean,包装 INFORMATION_SCHEMA

java - Joda Time : Set day of the week and week of the month

java - Spring 安全@PreAuthorize ("hasAnyRole(' ... .')")

c# - 使用打印设置从 WPF 打印 Word 文档(Aspose 生成)

python - 跟踪打印发生的位置?

c# - 打印 Excel 工作表/工作簿