java代码调用打印机没反应

发布于 2022-09-06 12:16:57 字数 2368 浏览 28 评论 0

以下是我的代码:

public static void main(String[] args) {
        JFileChooser fileChooser = new JFileChooser("F://"); // 创建打印作业
        int state = fileChooser.showOpenDialog(null);
        if (state == fileChooser.APPROVE_OPTION) {
    
            
            File file = fileChooser.getSelectedFile(); // 获取选择的文件
            // 构建打印请求属性集
            HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
            // 设置打印格式,因为未确定类型,所以选择autosense
            DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
            // 查找所有的可用的打印服务
            PrintService printService[] = PrintServiceLookup
                    .lookupPrintServices(flavor, pras);
            System.out.println(printService.length);
            // 定位默认的打印服务
            PrintService defaultService = PrintServiceLookup
                    .lookupDefaultPrintService();
            // 显示打印对话框
            PrintService service = ServiceUI.printDialog(null, 200, 200,
                    printService, defaultService, flavor, pras);
            if (service != null) {
                try {
                    DocPrintJob job = service.createPrintJob(); // 创建打印作业
                    FileInputStream fis = new FileInputStream(file); // 构造待打印的文件流
                    System.out.println(file.getName());
                    
                    DocAttributeSet das = new HashDocAttributeSet();
                    Doc doc = new SimpleDoc(fis, flavor, das);
                    System.out.println(doc.getAttributes());
                     try {
                            job.print(doc, pras); // 进行每一页的具体打印操作
                        } catch (PrintException pe) {
                            pe.printStackTrace();
                        }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        } else {
            // 如果打印内容为空时,提示用户打印将取消
            JOptionPane.showConfirmDialog(null,
                    "Sorry, Printer Job is Empty, Print Cancelled!",
                    "Empty", JOptionPane.DEFAULT_OPTION,
                    JOptionPane.WARNING_MESSAGE);
        }
        
    }

有弹出文件选择框,但是打印机没有反应了,正常情况下,我在PDF打开文件里选择打印,最终会出来一个xps文件保存的框,但是代码调用的时候没反应?有没有大侠告知下什么问题?
————————————————————————————————————————————
上面的问题解决了,是我选择格式没写具体,现在的问题是我要把输出的文件以PDF的格式输出,该怎么做?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文