我想打印一个文件。我为此写了这段代码。但它不打印我的文件。 选择服务:
String printerName = "Canon MF4320-4350".toLowerCase();
PrintService service = null;
PrintService[] services = PrinterJob.lookupPrintServices();
// Retrieve a print service from the array
for (int index = 0; service == null && index < services.length; index++) {
if (services[index].getName().toLowerCase().indexOf(printerName) >= 0) {
service = services[index];
}
}
用于打印:
byte[] bytes = null;
Path path = FileSystems.getDefault().getPath("D:\\Test.docx");
bytes = Files.readAllBytes(path);
DocFlavor docFlavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
PrintRequestAttributeSet faset = new HashPrintRequestAttributeSet();
faset.add(new Copies(5));
faset.add(Sides.ONE_SIDED);
DocAttributeSet daset = new HashDocAttributeSet();
daset.add(OrientationRequested.LANDSCAPE);
daset.add(Sides.ONE_SIDED);
Doc myDoc = new SimpleDoc(bytes, docFlavor, daset);
//create the DocPrintJob
DocPrintJob job = service.createPrintJob();
job.print(myDoc, faset);
答案 0 :(得分:1)
这不是打印的工作原理 - 当Word打印出docx
文件时,它不会将文件的原始字节发送到打印机。相反,它将文件转换为低级打印命令,并将其发送到打印驱动程序。
Java打印API可以处理2d rendering via drawing commands,或者它允许您将原始字节流发送到打印机,但是您负责制作打印机理解的字节。
另请参阅this question,并查看docx4j。