Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Stampare Etichetta ZPL

  1. #1

    Stampare Etichetta ZPL

    Buongiorno,

    ho la necessità di stampare delle etichette con una stampante ZM400.

    Il mio problema è che non riesco a comunicare con la stampante:

    Il Codice che utilizzo è:
    codice:
     
    FileOutputStream os = new FileOutputStream("USB001");            PrintStream ps = new PrintStream(os);
                String commands = "^XA\n"
                        + "\n"
                        + "^CF0,80\n"
                        + "^FO60,25^FDTIT^FS\n"
                        + "^CF0,40\n"
                        + "^FO350,55^FDData: 11-06-2015^FS\n"
                        + "^CF0,40\n"
                        + "^FO40,90^FDPRIMA LINEA^FS\n"
                        + "^FO40,115^FDEXTRA LARGE^FS\n"
                        + "\n"
                        + "\n"
                        + "^XZ";
                ps.println(commands);
                ps.print("\f");
                ps.close();
    Ho inserito questo codice in un'eccezione ma errori non ne da.
    Penso che anche come ho specificato la porta sia corretta perchè per esempio se metto USB002 mi restituisce: java.io.FileNotFoundException: USB002

    Ho provato a utilizzare anche java.awt.Desktop.getDesktop(); ma non funziona

    Ho provato un attimo a cercare ma onestamente non ho trovato nulla che mi aiutasse a risolvere.

    Mi sapreste gentilmente aiutare?

    Ringrazio Anticipatamente

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da thunderBest Visualizza il messaggio
    codice:
     FileOutputStream os = new FileOutputStream("USB001");
    E cosa è "USB001" ? E se anche fosse qualcosa di particolare (un device?) a seconda del S.O. .... allora diventa pure system-dependent e tra l'altro allora precisa anche quale S.O. è.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    USB001 è la porta con cui comunica la stampante.

    Perché leggendo un po di qua e di la avevo compreso che bisognava specificare la porta della stampante.
    Sistema Operativo Windows 7

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    FileOutputStream è un oggetto che scrive su un file (file system).
    L'argomento passato è il nome (comprensivo eventualmente di percorso completo) di un file fisico su disco (che se non esiste viene creato). In quel modo, quindi, stai semplicemente creando un file chiamato "USB001" nella directory corrente.

    Quindi, no... per comunicare con una "porta" devi usare qualcos'altro e molto probabilmente una libreria di terze parti (ad esempio, se si tratta di una porta USB, come immagino, dovrai trovare una libreria apposita per la comunicazione su porta USB).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    mmmm che gran confusione che ho fatto... :-(

    Detto questo forse ho trovato il modo. Vedo che crea il processo di stampa, domani potrò provare se effettivamente funziona.
    Ultima modifica di thunderBest; 18-06-2015 a 14:14

  6. #6
    Sono riuscito a stampare l'etichetta. :-)

    Metto il codice che se serve a qualcuno.

    codice:
     try {
    
                    PrintService psZebra = null;
                    String sPrinterName = null;
                    PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
    
    
                    for (int i = 0; i < services.length; i++) {
    
    
                        PrintServiceAttribute attr = services[i].getAttribute(PrinterName.class);
                        sPrinterName = ((PrinterName) attr).getValue();
    
    
                        if (sPrinterName.indexOf("ZM400") >= 0) {
                            psZebra = services[i];
                            break;
                        }
                    }
    
    
                    if (psZebra == null) {
                        System.out.println("Stampante non trovata!");
                        return;
                    }
                    DocPrintJob job = psZebra.createPrintJob();
    
    
                    String s = "Codice per creare l'etichetta ^XA..."
    
    
                    byte[] by = s.getBytes();
                    DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
                    Doc doc = new SimpleDoc(by, flavor, null);
                    job.print(doc, null);
    
    
                } catch (PrintException e) {
                    e.printStackTrace();
                }

    Mi rimane da capire come far stampare la pagina in orizzontale.

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da thunderBest Visualizza il messaggio
    byte[] by = s.getBytes();
    Occhio come al solito sulle questioni legate ai charset. Questo getBytes() usa il charset predefinito della piattaforma (che varia da un S.O. all'altro), che potrebbe non essere appropriato per lo stream di byte da inviare alla stampante. Verifica cosa si aspetta e specificalo. Se deve essere es. ASCII, allora getBytes("US-ASCII").
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Occhio come al solito sulle questioni legate ai charset. Questo getBytes() usa il charset predefinito della piattaforma (che varia da un S.O. all'altro), che potrebbe non essere appropriato per lo stream di byte da inviare alla stampante. Verifica cosa si aspetta e specificalo. Se deve essere es. ASCII, allora getBytes("US-ASCII").
    A ok. Verifico.

    Grazie mille!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.