jvm Java中的PrintService未执行任何操作

xe55xuns  于 2022-11-07  发布在  Java
关注(0)|答案(1)|浏览(195)

我试图打印一些文件,我有与java应用程序。但当我选择打印机,它添加到打印机队列的文件,但没有发生后,队列清除。
这是我代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.print.*;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.JobName;

public class test {

    public static void main(String[] args) throws PrintException, IOException {
        PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet();

        PrintService[] services = PrintServiceLookup.lookupPrintServices(DocFlavor.SERVICE_FORMATTED.PAGEABLE, attrs);
        PrintService service = PrintServiceLookup.lookupDefaultPrintService();

        PrintService selection = ServiceUI.printDialog(null, 200, 200, services, service, null, attrs); 
        if(selection != null)
        {
            String fileName = "C:\\Temp\\test.docx";
            File f = new File(fileName);

            InputStream is = new FileInputStream(f);

            DocPrintJob job = selection.createPrintJob();

            SimpleDoc doc = new SimpleDoc(is, DocFlavor.INPUT_STREAM.AUTOSENSE, null);

            PrintRequestAttributeSet jAttrs = new HashPrintRequestAttributeSet();
            jAttrs.add(new JobName(fileName, null));

            job.print(doc, jAttrs);

            if(is != null)
                is.close();

        }
    }

}

这是当我在对话框中选择打印机并单击“打印”时打印机队列的捕获:

而在我的打印机中没有关于打印作业的信息...
当我从个人电脑而不是从应用程序打印这个文件时,它的工作非常完美。当我使用这个java代码时:

Desktop.getDesktop().print(f);

它的打印完美。但它不是我想要的,我想让用户在对话框中选择打印机。

sqserrrh

sqserrrh1#

我在一个旧程序和一台新打印机(Hp 477dw)上也遇到过类似的问题。解决办法是安装一个PCL6通用驱动程序。

相关问题