java代码调用打印机没反应

qq_34350475 2018-01-26 04:36:28
以下是我的代码:

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文件保存的框,但是代码调用的时候没反应?有没有大侠告知下什么问题?
...全文
1403 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
BLUESKYHOST 2021-07-01
  • 打赏
  • 举报
回复

解决了吗解决了联系我 我或者我联系你

生存是规则 2019-06-27
  • 打赏
  • 举报
回复
引用 13 楼 生存是规则 的回复:
有没有大仙能解决, DocFlavor.INPUT_STREAM.autosense之后,打印任务可以加到打印机,但是打印机识别不了,不打印?
最后通过pdfbox这个Apache开源的jar包解决了打印机能添加打印任务不打印的问题
PDDocument document = null;
        try {
            document = PDDocument.load(file);
            PrinterJob printJob = PrinterJob.getPrinterJob();
            printJob.setJobName("快递面单打印");    
            PrintService printService=PrintServiceLookup
	                    .lookupDefaultPrintService();
                if(printService!=null){
                    printJob.setPrintService(printService);
                }else{
                    System.out.print("打印失败,未找到默认打印机,请检查。");
                    return ;
                }
           // }
            //设置纸张及缩放
            PDFPrintable pdfPrintable = new PDFPrintable(document, Scaling.SCALE_TO_FIT);
            //设置多页打印
            Book book = new Book();
            PageFormat pageFormat = new PageFormat();
            //设置打印方向
            pageFormat.setOrientation(PageFormat.PORTRAIT);//纵向
            pageFormat.setPaper(getPaper());//设置纸张
            book.append(pdfPrintable, pageFormat, document.getNumberOfPages());
            printJob.setPageable(book);
            printJob.setCopies(1);//设置打印份数
            //添加打印属性
            HashPrintRequestAttributeSet pars = new HashPrintRequestAttributeSet();
            //pars.add(Sides.DUPLEX); //设置单双页
            printJob.print(pars);
public static Paper getPaper() {
        Paper paper = new Paper();
        // 默认为A4纸张,对应像素宽和高分别为 595, 842
        int width = 284;
        int height = 567;
        // 设置边距,单位是像素,10mm边距,对应 28px
        int marginLeft = 5;
        int marginRight = 0;
        int marginTop = 5;
        int marginBottom = 0;
        paper.setSize(width, height);
        // 下面一行代码,解决了打印内容为空的问题
        paper.setImageableArea(marginLeft, marginRight, width - (marginLeft + marginRight), height - (marginTop + marginBottom));
        return paper;
}
qq_34350475 2019-06-27
  • 打赏
  • 举报
回复
引用 13 楼 生存是规则 的回复:
有没有大仙能解决, DocFlavor.INPUT_STREAM.autosense之后,打印任务可以加到打印机,但是打印机识别不了,不打印?
感谢分享
生存是规则 2019-06-14
  • 打赏
  • 举报
回复
有没有大仙能解决, DocFlavor.INPUT_STREAM.autosense之后,打印任务可以加到打印机,但是打印机识别不了,不打印?
'李自在 2018-07-31
  • 打赏
  • 举报
回复
DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;
LXS1Q 2018-06-01
  • 打赏
  • 举报
回复
我现在也是这样 打印机把东西挂起不打印 你是怎么解决的啊 可以给我看哈吗?
qq_34350475 2018-01-30
  • 打赏
  • 举报
回复
引用 6 楼 zhengewudi 的回复:
这都是些什么啊,看不懂
就java的打印服务啊,javax.print包下的,可以去看看了解下
qq_34350475 2018-01-30
  • 打赏
  • 举报
回复
引用 7 楼 cc007cc009 的回复:
[quote=引用 1 楼 qq_34350475 的回复:] 上面的问题解决了,是我选择格式没写具体,现在的问题是我要把输出的文件以PDF的格式输出,该怎么做?
々POI包可以解决你的问题。[/quote] 意思是我还得做个文件转换吗?
qq_34350475 2018-01-30
  • 打赏
  • 举报
回复
引用 5 楼 lye2000000_super 的回复:
[quote=引用 1 楼 qq_34350475 的回复:] 上面的问题解决了,是我选择格式没写具体,现在的问题是我要把输出的文件以PDF的格式输出,该怎么做?
输出的文件不是打印吗?[/quote] 正常执行打印任务的时候调用默认打印机不是会保存一个xps格式的文件吗,我现在需要得到一个PDF文件,或许还可以保存到指定路径
qq_34350475 2018-01-29
  • 打赏
  • 举报
回复
引用 3 楼 Oceanside_yh 的回复:
额....你在自言自语么
emmmm......顺便吐槽,你不觉得看着难受吗
学生宫布 2018-01-29
  • 打赏
  • 举报
回复
引用 1 楼 qq_34350475 的回复:
上面的问题解决了,是我选择格式没写具体,现在的问题是我要把输出的文件以PDF的格式输出,该怎么做?
々POI包可以解决你的问题。
振唯一 2018-01-29
  • 打赏
  • 举报
回复
这都是些什么啊,看不懂
  • 打赏
  • 举报
回复
引用 1 楼 qq_34350475 的回复:
上面的问题解决了,是我选择格式没写具体,现在的问题是我要把输出的文件以PDF的格式输出,该怎么做?
输出的文件不是打印吗?
Oceanside_yh 2018-01-28
  • 打赏
  • 举报
回复
额....你在自言自语么
qq_34350475 2018-01-26
  • 打赏
  • 举报
回复
上面的问题解决了,是我选择格式没写具体,现在的问题是我要把输出的文件以PDF的格式输出,该怎么做?
qq_34350475 2018-01-26
  • 打赏
  • 举报
回复
这个版面真的有毒!链接加广告比正经内容还多!这种设计还能拿得出来??是老板克扣工资员工报复吗

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧