dopo vari e molteplici problemi derivanti dai driver, aggiornamenti di sistemi operativi, cambio si stampante e più client windows che devono stampare sulla stessa stampante di rete ecc...
mi sono adoperato per usare il linguaggio nativo che di solito hanno tutte le stampanti zebra
l'unico requisito è che la stampante zebra abbia la scheda di rete
in questo modo si tratta di mandare un file ascii alla zebra tramite rete
con una porta pubblica ed il giusto redirect si può stampare da qualunque parte del mondo e basta installare i driver su un unico pc
Ci stavo pensando, magari non subito ma la cosa mi interessa, soprattutto per il fatto che si può stampare anche da remoto.
Peccato che tutte le stampantine Zebra, in questione, siano collegate via usb.
Alcune hanno la seriale e penso che si possa fare una cosa analoga avendo tempo.
@nomorelogic
Penso che sia stato l'approccio applicato anche dalla azienda sw che accennavo sul mio post, immagine raster fatta con HI HI HI (linguaggio zebra) ... ;D
Almeno ci facciamo una risata ogni tanto ;D.
Scherzi a parte, siccome penso che è come se Lazreport al momento della stampa si dimenticasse il formato pagina, avevo pensato di introdurre un istruzione per specificare il formato pagina, ottenendo questo:
frReport1.LoadFromFile('etic2.lrf');
frreport1.Pages.Pages[0].ChangePaper(256,142,85,PoPortrait);
frReport1.ShowReport;
Suggerimento trovato in: https://forum.lazarus.freepascal.org/index.php?topic=15646.0 (https://forum.lazarus.freepascal.org/index.php?topic=15646.0)
Però alla compilazione mi dice:
unit1.pas(36,51) Error: Identifier not found "PoPortrait"
Come se mi mancasse una unit ma non capisco quale, quelle che uso sono:
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, LR_Class;
Come avevo detto, ho segnalato il bug a Lazarus e mi hanno detto di modificare il mio codice:
procedure TForm1.Button1Click(Sender: TObject);
begin
frReport1.LoadFromFile('stampa_ETIC.lrf');
frReport1.PrepareReport;
frReport1.PrintPreparedReport('1', 1);
end;
In questo modo:
procedure TForm1.Button1Click(Sender: TObject);
begin
frReport1.LoadFromFile('stampa_ETIC.lrf');
// set the custom paper size (256) with dimensions 50mm (50*10) x 30mm (30*10)
// add this line:
frReport1.Pages[0].ChangePaper(256, 500, 300, poPortrait);
//and this line - set margins to 0
frReport1.Pages[0].Margins.AsRect := Rect(0, 0, 0, 0);
frReport1.PrepareReport;
frReport1.PrintPreparedReport('1', 1);
end;
Devo dire che funziona, il problema non si è più presentato.
Penso che questa soluzione serva per aggirare un bug in LazReport.
Infatti io in fase di design avevo già definito la grandezza della pagina ed i margini e poi qui mi si dice ri-settarli a tempo d'esecuzione.
Tra l'altro devo poi inserire le dimensioni in mm moltiplicate per 10, altra cosa strana.