自动打印在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. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在Java中解析String的有效方法是什么?
- 利用barcode4j生成条形码
- java – DetailedState.VERIFYING_POOR_LINK代表什么
- 读取jar包中的图片的代码
- Android利用后台服务下载网络数据
- ANTLR v4,JavaLexer和JavaParser将null作为解析树返回
- java – 如何在Linux中签署Mac OS X应用程序?
- java – OOP方法是什么? (或你的方法?)
- java – 使用MockRestServiceServer模拟REST调用
- java – EventQueue.invokeLater vrs SwingUtilities.invok
