簡體   English   中英

Java 打印 API 向打印機發送命令

[英]Java print API send commands to printer

我的計算機(Windows 7)上安裝了一些打印機,並且在控制面板上顯示良好。

我想發送一些特殊命令,例如:剪切命令或條碼打印命令(ESC/POS 命令)。

是否可以使用 Java Print API 做到這一點? 還是 Java Print API 只執行打印服務?

提前致謝。

問題已解決:感謝 VGR。

這是一個可以幫助任何遇到相同問題的人的代碼:

private PrintService printer = ...; // init this using PrintService.lookupPrintServices();

if(this.printer != null) {
        String commandToSend = "Some command\n";

        Doc myDoc = new SimpleDoc(commandToSend.getBytes(), DocFlavor.BYTE_ARRAY.AUTOSENSE, null);
        DocPrintJob job = this.printer.createPrintJob();

        try {
            job.print(myDoc, null);
        } catch (PrintException e) {
            e.printStackTrace();
        }
    }

不確定你是否能夠解決它,但這里有一個例子

final byte[] VALIDATION_MODE = new byte[]{27, 'c', '0', 4}; // Print in validation mode
final byte[]  PAPER_FULL_CUT = {0x1d,0x56,0x00}; // Full cut paper
final byte[]  PAPER_PART_CUT = {0x1d,0x56,0x01}; // Partial cut paper

public void print(String receiptContent, String printerName) throws IOException {
        DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
        
        DocPrintJob docPrintJob = selectedPrinter(printerName).createPrintJob();
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        
        outputStream.write(VALIDATION_MODE);
        outputStream.write(receiptContent.getBytes());
        outputStream.close();
                        
        ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
        Doc doc = new SimpleDoc(inputStream, flavor, null);
        
        try {
            docPrintJob.print(doc, null);
        } catch (PrintException e) {
            System.out.println("Error:" + e.getMessage());
        }
        System.out.println("Print Job Finished");
    }


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM