2012-03-13 34 views
5

Sto lavorando alla creazione di una casella di disegno/disegno basata su tela HTML5. Attualmente salviamo la tela sul server come PNG, ma possiamo facilmente salvare la stringa base64 nel database. Ora la domanda è come includere la firma sulla ricevuta stampata.Includi PNG in recesso su LP2844Z (stampante Zebra)

Attualmente utilizziamo un campo^GF per gestire le immagini di stampa, ma la domanda è in che formato deve essere inserito il file PNG per la stampante. Posso semplicemente includere la stringa codificata Base64? O dovrei convertirlo in una stringa esadecimale ASCII? O dovrei davvero convertirlo prima in una bitmap?

Non riesco davvero a trovare alcuna documentazione sul fatto che questa stampante specifica gestisca i file PNG o persino come inviarli. L'unica informazione che ho trovato dice di inviarlo come un bitmap B64 o Z64, ma vedo riferimenti a mandare un png ovunque.

+0

Penso che sia necessario fornire maggiori dettagli su come lo si invia a una stampante. Attraverso un'API? O se la ricevuta viene visualizzata in un browser, il browser si prenderà cura di inviare l'immagine alla stampante quando si stampa. Ovviamente probabilmente vorrai testarlo contro l'hardware per assicurarti di non superare le dimensioni dell'area di stampa. – AaronLS

+0

Le stampanti Zebra hanno un formato di dati proprietario incredibilmente oscuro. Provare a convertire i formati di immagine è uno di troppo, si sarà in avanti semplicemente usando il driver di stampa di Windows. PrintDocument nel tuo codice. –

+0

C'è un modo per convertire un XML in un file .lbl e vedere che cosa viene effettivamente visualizzato? – cDecker32

risposta

5

I dati che è necessario inviare non sono PNG. È necessario prendere l'immagine e convertirla in bianco e nero e inviare i dati alla stampante. Ad esempio, se si dispone di un'immagine di 40 x 50 px, si prenderà l'immagine e si elimineranno le informazioni sul colore in modo da avere un totale di 2000 bit di dati. Quindi invia la tua ZPL in basso come^GFB, 250,250,5, {2000 bit di dati}.

Ho ottenuto 250 prendendo 2000 bit/8 (bit/byte) per ottenere 250 byte. Ho ottenuto 5 dividendo 40 per 8. Il numero di righe verrà calcolato automaticamente.

Qualcosa che trovo utile quando si ha a che fare con le stampanti Zebra è pensare in termini di bit. Tutta la grafica è fatta su un piccolo livello.

Ricordare che l'immagine che si sta per inviare verso il basso cambierà le dimensioni in base al DPI della stampante. Una stampante da 203 DPI mostrerà il mio esempio a circa 0,2 pollici x 0,25 pollici. Su una stampante 300 DPI mostrerà a circa .13in di .16in. Questo perché la stampante inserisce i dati grezzi nel formato e il numero di px è il numero di punti dell'immagine.

Spero che questo aiuto!

Riferimenti: [1] ZPL Manuel a pagina 208 (^ GF pagina2).

+0

Veramente sono venuto qui per postare che l'ho scoperto ieri sera, ma hai vinto signore. Alla fine ho capito giocando con i numeri che hanno specificato i file di immagine originali. Ora la domanda è come ridurre un PNG RGB in un bit tiff/bitmap in C#. – cDecker32

+0

Qualcosa che ho trovato molto veloce: 'System.Drawing.Bitmap b = nuovo System.Drawing.Bitmap (" c: \\ test.jpg ");' 'System.Drawing.Bitmap b0 = CopyToBpp (b, 1) ; ' L'ho trovato qui: http://www.wischik.com/lu/programmer/1bpp.html. – Ethan

+0

Sì, nel corso della giornata ho lavorato su questo e l'unico problema ora è una sorta di problema di offset. Molto probabilmente perché sto convertendo da un bmp. Ho solo bisogno di capire che tipo di header di file sta cercando questa cosa ... – cDecker32