自动打印在Java中不起作用
我有要求以两种不同的方式打印pdf文件 – 一个通过网页,用户将看到打印预览并选择打印机并进行打印.第二种方式是自动化打印,只需点击一个按钮,PDF就可以发送到打印机.
第一种打印方式是通过网页正常工作,但不是第二种方式.成功检索默认打印机以进行自动打印,但是不会打印,我也没有得到任何错误.以下是我的分析: >最初,我以为DocFlavor不被支持.然后我列出 请看下面的代码: if (mDestination != null) { // if destination attribute is set try { FileOutputStream fos = new FileOutputStream(mDestination); byte [] buffer = new byte[1024]; int cread; while ((cread = instream.read(buffer,buffer.length)) >= 0) { fos.write(buffer,cread); } fos.flush(); fos.close(); } catch (FileNotFoundException fnfe) { notifyEvent(PrintJobEvent.JOB_FAILED); throw new PrintException(fnfe.toString()); } catch (IOException ioe) { notifyEvent(PrintJobEvent.JOB_FAILED); throw new PrintException(ioe.toString()); } notifyEvent(PrintJobEvent.DATA_TRANSFER_COMPLETE); notifyEvent(PrintJobEvent.JOB_COMPLETE); service.wakeNotifier(); return; } 这是JOB_COMPLETE唯一的地方.我认为这个块是写入一个文件,这对我来说是不需要的. 我认为实际的打印在同一个方法Win32PrintJob.print()中发生在以下行中. private native boolean More ...printRawData(byte[] data,int count); 但是这是一个本地的方法,所以我不知道这里发生了什么. 请让我知道为什么我无法打印PDF. 编辑: 附上打印文件的代码: PrintService pss = PrintServiceLookup.lookupDefaultPrintService(); DocPrintJob job = pss.createPrintJob(); DocAttributeSet das = new HashDocAttributeSet(); Doc document; try { document = new SimpleDoc(new FileInputStream(new File(fileName)),DocFlavor.INPUT_STREAM.AUTOSENSE,das); PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); job.addPrintJobListener(new PrintJobWatcher()); job.print(document,pras); } 注意:我尝试过不同的口味,如PDF,PCL.没有任何工作,我得到不支持的运行时错误. 解决方法
你尝试过JPadel打印PDF文件:
摘自Sample codes final PdfBook pdfBook = new PdfBook(pdfDecoder,printJob.getPrintService(),attributes); pdfBook.setChooseSourceByPdfPageSize(false); final SimpleDoc doc = new SimpleDoc(pdfBook,DocFlavor.SERVICE_FORMATTED.PAGEABLE,null); // used to track print activity printJob.addPrintJobListener(new PDFPrintJobListener()); try { printJob.print(doc,attributes); } catch (final Exception e) { LogWriter.writeLog("Exception " + e + " printing"); // <end-demo> } 除此之外,您还可以提供打印机名称,并添加列表PDFPrintJobListener. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |