带有规格问题的Java Print程序? [英] Java Print program with Specifications issues?

查看:135
本文介绍了带有规格问题的Java Print程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用过这个

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

获取我的打印机的DocFlavor并返回

to get the DocFlavor of my printer and it returned

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

使用

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

打印文件的代码bt服务数组为空??

code to print file bt the the services array is empty??

当我传递PrintServiceLookup.lookupPrintServices(null,null);

when i pass PrintServiceLookup.lookupPrintServices(null, null);

它返回所有可用的打印机当我打印我的文档时,它给出了javax.print.PrintException:打印机不接受作业...

it returns all the printers available and when i print my doc it gives javax.print.PrintException: Printer is not accepting job...

推荐答案

尝试删除和添加打印机。此外,如果Docflavor是Autosense,您传递的属性集将不会生效。您要打印什么类型的文档?它是受支持的Docflavors之一吗?如果docflavor不支持使用Java Print Service API,则无法打印doc,pdf等。

Try removing and adding the printer. Also, the attribute set you pass won't take in effect if the Docflavor is Autosense. What type of document are you trying to print? Is it among the supported Docflavors? You cannot print doc, pdf etc using Java Print Service API if it is not supported by the docflavor.

这篇关于带有规格问题的Java Print程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆