小弟近来用java开发系统需实现一个程序操控打印机直接打印pdf文档的功能,查阅API丛书后编写的代码如下:
import javax.print.*;
import javax.print.attribute.*;
import java.io.*;
public class Printing {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
String filename = "E:\\test.pdf";
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintService printService[] = PrintServiceLookup
.lookupPrintServices(flavor, pras);// 用户可选用的PrintService实例数组。
int i = 0;
for (PrintService ps : printService) {
System.out.println(ps.getName());
i++;
}
PrintService defaultService = PrintServiceLookup
.lookupDefaultPrintService(); // 默认的PrintService
PrintService service = ServiceUI.printDialog(null, 200, 200,
printService, defaultService, flavor, pras);
if (service != null) {
DocPrintJob job = service.createPrintJob(); // 创建打印任务
FileInputStream fis;
fis = new FileInputStream(filename);
DocAttributeSet das = new HashDocAttributeSet();
/*
* 定义要打印的文档
*/
Doc doc = new SimpleDoc(fis, flavor, das);
job.print(doc, pras);
Thread.sleep(10000);
fis.close();
}
System.exit(0);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (PrintException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行后先是能打印txt格式的,但是打印pdf文件总是乱码,后来不知为何直接无法打印了,运行后电脑右下角显示一个打印机连接图标(截图),显示“1个文档正在打印,原因Administrator”,求教帮忙解决一下!
2012年8月30日 10:41
10
0
0
3