2010-02-03 17 views
14

Il mio cliente mi ha chiesto di stampare le ricevute su un Epson TM U220 (http://pos.epson.com/products/TM-U220.htm) dalla mia applicazione web. Non ho idea di come farlo. Ci sono delle applet java o qualcos'altro che posso usare per la stampa? Dovrei usare JasperReports? (JasperReports aiuta a far fronte a questo problema?) Se ci sono app in flash che potrebbero essere utilizzate, non ho alcuna obiezione ad utilizzarle.Come stampare dall'applicazione Web alla stampante di ricevute?

Sto utilizzando Grails per le mie app Web.

risposta

3

Non è necessaria un'applet, da un controller Grails è possibile utilizzare qualsiasi libreria Java. Utilizzare i servizi di stampa Java disponibili per il runtime in javax.print. Ciò presuppone che la stampante sia installata dove è in esecuzione il runtime di Grails.

2

Ho creato un'applicazione per scrivere su una stampante di ricevute per un sistema POS qualche tempo fa. Il modo in cui lo facevamo era semplicemente aprire un printwriter che collegava la stampante di ricevute corretta. Abbiamo inviato manualmente i codici dei caratteri alla stampante per creare grassetto, sottolineato, cambiamenti di carattere, ecc. A causa dei requisiti del client che lo facciamo in quel modo (c'era un'altra applicazione che usava questi codici carattere e volevano che li usassimo anche) .

Se non si desidera passare attraverso il processo manuale come ho fatto una buona scelta è JavaPOS. Ha un sacco di cose relative alla stampa di stampanti per ricevute (sicuramente molto più elegante di quanto descritto sopra). Lo troverai a http://www.javapos.com/.

2

per ottenere questo lavoro, è sufficiente configurare la stampante di ricevute come stampante predefinita e rinominarlo come "zebra":

enter image description here

Poi basta scaricare la libreria jZebra, mettere il file jar nella directory del progetto e oplà:

<input type=button onClick="print()" value="Print"> 
<applet name="jzebra" code="jzebra.PrintApplet.class" archive="./jzebra.jar" width="100" height="100"> 
     <param name="printer" value="zebra"> 
</applet> 

<script> 
     function print() { 
     document.jzebra.append("PRINTED USING JZEBRA\n"); 
     document.jzebra.print(); 
     } 
</script> 

enter image description here

+1

non è così facile in questi giorni ... aggiornamento 45 da Oracle richiede che le applet Java siano firmate per essere eseguite senza chiedere conferma, quindi ci sono alcuni costi legati all'uso di QZ Print in sicurezza in un ambiente di produzione. –

+0

@RobbieAverill sta usando qzpint websocket ha anche queste limitazioni? – Venkat

+0

@Venkat non sono sicuro. Se esegui l'applet Java sul browser dei client (che dovresti fare per interfacciarti alla stampante) allora probabilmente dovrebbe essere firmato in entrambi i modi –