如何解决javax.print.DocPrintJob 除了 java.awt.print.PrinterJob 打印之外什么都不打印
我试图打印任何文件 docx、jpg、eml、msg、txt、pdf、xls 等...
这是我的代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.ServiceUI;
import javax.print.SimpleDoc;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.JobName;
import com.PrintNative.PrintListener;
public class test {
public static void main(String[] args) throws PrintException,IOException {
PrintRequestAttributeSet attrs = new HashPrintRequestAttributeSet();
PrintService[] services = PrintServiceLookup.lookupprintServices(DocFlavor.INPUT_STREAM.AUTOSENSE,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();
Doc doc = new SimpleDoc(is,DocFlavor.INPUT_STREAM.AUTOSENSE,new HashDocAttributeSet());
PrintRequestAttributeSet jAttrs = new HashPrintRequestAttributeSet();
jAttrs.add(new JobName(fileName,null));
job.addPrintJobListener(new PrintListener(is));
job.print(doc,jAttrs);
if(is != null)
is.close();
}
}
}
但是当我使用带有 java.awt.print.PrinterJob 的打印机时,pdf 文件的打印工作完美:
public static void main(String[] args) {
PrinterJob printerJob = PrinterJob.getPrinterJob();
PageFormat pageFormat = printerJob.defaultPage();
Paper paper = pageFormat.getPaper();
paper.setimageableArea(0,pageFormat.getWidth(),pageFormat.getHeight());
pageFormat.setPaper(paper);
File f = new File("C:\\Temp\\test.pdf");
document = PDDocument.load(f);
printerJob.setPageable(new pdfpageable((PDDocument) document));
if (printerJob.printDialog()) {
printerJob.print();
}
}
我能做什么? 打印机没有问题,我的电脑也没有问题,除了java应用程序,我可以从任何地方打印。
这一张也打印:
Desktop.getDesktop().print(f);
但是对于这个没有打印机对话框。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。