文件尚未通过java中的打印机设备打印

时间:2016-05-20 08:56:25

标签: java printing printers

我想打印一个文件。我为此写了这段代码。但它不打印我的文件。 选择服务:

      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);

1 个答案:

答案 0 :(得分:1)

这不是打印的工作原理 - 当Word打印出docx文件时,它不会将文件的原始字节发送到打印机。相反,它将文件转换为低级打印命令,并将其发送到打印驱动程序。

Java打印API可以处理2d rendering via drawing commands,或者它允许您将原始字节流发送到打印机,但是您负责制作打印机理解的字节。

另请参阅this question,并查看docx4j