java中的PrintService没有做任何事情

问题描述

我试图打印一些我在 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,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();
            
        }
    }

}

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

enter image description here

并且在我的打印机中没有关于打印作业的信息...

当我从电脑而不是从应用程序打印此文件时,它的工作完美无缺。 当我使用此 java 代码时:

Desktop.getDesktop().print(f);

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...