2

より大きなアプリケーションのコンテキストでは、私のアプレットは、(ユーザーがインストールしたものに応じて) Zebra または Dymo のラベル プリンターにデータを印刷する必要があります。

受信したデータはエスケープされた形式であり、プリンターに送信して解釈させるだけのデータです。

検索すると、2つの解決策が見つかりました。方法 1:

byte[] printdata;
PrintService pservice = PrintServiceLookup.lookupDefaultPrintService(); //or get the printer in some other way
DocPrintJob job = pservice.createPrintJob();
DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
Doc doc = new SimpleDoc(printdata, flavor, null);

および方法 2:

PrintStream printStream = new PrintStream(new FileOutputStream(“LPT1”));
printStream.print(“Hello World”);
printStream.close();

USBまたはシリアルポートを使用するプリンターでクロスプラットフォームで動作するには、これが必要です。この動作を実装する正しい方法は何ですか?

方法 2 の 1 つの問題は、同じ方法でプリンターの URL を見つける必要があることです...

4

2 に答える 2

3
public String rawprint(String printerName, String conte) {
    String res = "";
    PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
    printServiceAttributeSet.add(new PrinterName(printerName, null));
    PrintService printServices[] = PrintServiceLookup.lookupPrintServices(null, printServiceAttributeSet);
    if (printServices.length != 1) {
        return "Can't  select printer :" + printerName;
    }
    byte[] printdata = conte.getBytes();
    PrintService pservice = printServices[0];
    DocPrintJob job = pservice.createPrintJob();
    DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
    Doc doc = new SimpleDoc(printdata, flavor, null);
    PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
    try {
        job.print(doc, aset);
    } catch(Exception e){
        res = e.getMessage();

    }
    return res;
}

javafxでクールに動作

于 2014-07-19T09:49:51.807 に答える