Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: tito_livio - Febbraio 12, 2025, 07:33:37 pm

Titolo: Probl. stampa etichette su Zebra e nuove versioni di Lazarus (Risolto)
Inserito da: tito_livio - Febbraio 12, 2025, 07:33:37 pm
Ciao a tutti,
in alcuni miei programmi stampo, con Lazreport, delle etichette con la stampante Zebra in Windows.
Le etichette sono composte da due o tre righe di testo e da un barcode 1D.
Fino a quando adottavo la versione di Lazarus 2.0.6 non c'era nessun problema, l'etichetta veniva gestita, con lazreport, come una normale stampa con la differenza che la pagina invece di essere A4 aveva dimensioni più piccole, in questo caso 50x30 mm.
Invece, con le nuove versioni di Lazarus, almeno dalla 2.2.4 e anche con l'ultima 3.8 viene stampata solo una piccola parte di quanto previsto, soltanto una striscia di pochi mm.
Allego una scansione, con una scritta di prova, delle etichette stampate sia con la versione di Lazarus che funziona (2.0.6),e sia con l'ultima versione (3.8 ).
Allego anche un semplice progetto relativo a questa stampa.

Aggiungo che se la stampa viene eseguita in modo preview e se entro nelle proprietà della stampante e poi esco senza modificare niente, allora la stampa viene eseguita correttamente.
Ovviamente, non posso chiedere all'utente di eseguire questa procedura per ogni stampa di una singola etichetta.

Grazie in anticipo.
Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: DragoRosso - Febbraio 12, 2025, 09:57:03 pm
Non ho visto il progetto, ma dalla versione che hai tu a quelle nuove probabilmente è cambiato anche LazReport. Hai provato a ricostruire ex novo il report ?

A me sembra un problema relativo ai settaggi del report. Anche con la versione a pagamento (ossia FastReport) c'è tra le varie versioni qualche incompatibilità.

Hai provato a stampare su un pdf (se LazReport non può ... anche tramite utility di 3 parti come PDF24) ?

Vedrò il progetto.
Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: tito_livio - Febbraio 12, 2025, 11:08:32 pm
Non ho visto il progetto, ma dalla versione che hai tu a quelle nuove probabilmente è cambiato anche LazReport. Hai provato a ricostruire ex novo il report ?

A me sembra un problema relativo ai settaggi del report. Anche con la versione a pagamento (ossia FastReport) c'è tra le varie versioni qualche incompatibilità.

Hai provato a stampare su un pdf (se LazReport non può ... anche tramite utility di 3 parti come PDF24) ?

Vedrò il progetto.

Si, ho provato a fare un nuovo report con le nuove versioni ma niente da fare.
Lazreport è cambiato sicuramente, nel design aiuta ad allineare gli oggetti, per esempio, e mi sembra molto più veloce nel creare le stampe, su a4 va benissimo.
Poi Lazreport, con alcuni componenti aggiuntivi che non ho caricato nel progetto di esempio, esporta in pdf tranquillamente ed anche in csv.

Un problema simile lo ha riscontrato un utente del forum internazionale, però non ha risolto veramente: https://forum.lazarus.freepascal.org/index.php/topic,68775.msg532191.html?PHPSESSID=1fdrkg96i4enspc7m19jpgd0u5#msg532191 (https://forum.lazarus.freepascal.org/index.php/topic,68775.msg532191.html?PHPSESSID=1fdrkg96i4enspc7m19jpgd0u5#msg532191)
Anche a me all'inizio dava lo stesso suo errore ma poi ho risolto definendo per bene il formato pagina.
Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: DragoRosso - Febbraio 13, 2025, 10:55:56 am
Ho lanciato il tuo programma solo compilando (Lazarus 3.8 FPC 3.2.2) e mi stampa correttamente (stampante laser HP a colori, mi sono pure accorto che manca toner  :o 8) ). Ho provato anche su un pdf e anche li non ci sono problemi.

Stesse prove cambiando font con risultati ugualmente positivi.

L'unica cosa che mi viene in mente è "font e Zebra" (le Zebra sono sempre state un pò ostiche, le usano i miei clienti industriali). Dovresti provare a effettuare qualche stampa cambiando font.

Non mi sovviene nulla ora per poterti aiutare ulteriormente.

P.S.: guardando meglio l'immagine che hai postato originariamente, sembrerebbe quasi il testo venga scritto nella parte di intestazione del report invece che nell'area memo ...
Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: tito_livio - Febbraio 13, 2025, 11:24:36 am
Ciao DragoRosso, il problema è proprio con i piccoli formati e penso che sia una peculiarità di Zebra dato che con Dymo, a parte qualche problema iniziale, riesco a stampare.
Vedrò con i Font se e come possono influire sul'esito della stampa.
Sto anche provando altre strade, vi farò sapere.
Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: DragoRosso - Febbraio 13, 2025, 11:33:09 am
Ulteriore cosa ... mi sovviene che anni fà quando una azienda cambiò il suo software (compresa la stampa delle etichette) ebbe un problema proprio con le stampanti zebra e dovette impostare il software per una stampa specifica (non ricordo se vettoriale o raster). A quel tempo cercarono di attribuire a me (che non avevo nulla a che fare con quell'impianto fortunatamente) il malfunzionamento del sw e delle zebra ... :-X


Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: nomorelogic - Febbraio 13, 2025, 12:30:32 pm
volevo riportare la mia esperienza con le zebra

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

tra l'altro, stampare ad esempio 200 etichette, è un'operazione velocissima

si tratta di cambiare approccio: non più LazReport ma inviare un file ascii via rete
(rinunciando al design grafico wysiwyg)

capisco che ora non è il momento di fare questo cambiamento
ma vi assicuro che si tratta di un approccio che riduce notevolmente tutti questi problemi

nomorelogic
Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: DragoRosso - Febbraio 13, 2025, 04:05:08 pm
@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
Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: tito_livio - Febbraio 13, 2025, 11:06:06 pm
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:

Codice: [Seleziona]
  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:
Codice: [Seleziona]
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, LR_Class;
Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: DragoRosso - Febbraio 14, 2025, 12:21:35 am
Prova ad inserire nelle uses "printer.pas".
Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: nomorelogic - Febbraio 14, 2025, 09:39:55 am

@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.


si ricordo ancora le risate che mi sono fatto quando un cliente mi ha chiamato col corriere che non poteva andar via perché non si stampavano le etichette
però avevano sostituito il pc  il giorno prima senza reinstallare la zebra e senza dire niente...

che ridere  ;D ;D ;D
 :o

Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: DragoRosso - Febbraio 14, 2025, 11:43:31 am
@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.
si ricordo ancora le risate che mi sono fatto quando un cliente mi ha chiamato col corriere che non poteva andar via perché non si stampavano le etichette
però avevano sostituito il pc  il giorno prima senza reinstallare la zebra e senza dire niente...
che ridere  ;D ;D ;D
 :o
Bhè, se per quello da un cliente che produceva materiale per più ditte (anche concorrenti tra loro) successe tempo fà un bel cas...o: dopo un aggiornamento del firmware di una Zebra (operazione fatta in autonomia dal cliente) non si sà bene per quale motivo l'aggiornamento delle etichette avvenne solo parzialmente, ed è si spedi il materiale (diversi centinaia di pezzi) ad una ditta con il logo di un'altra ....  ;D ;D ;D

Anche li le risate (mie da spanciarsi perchè non c'entravo con l'inghippo) e le altre amare ... almeno li però il cliente ha dovuto fare mea culpa ...

Comunque ragazzi (da 0 ai 120 anni) ogni tanto bisogna ridere, anche su alcune disavventure. C'è bisogno di spensieratezza e allegria ...
Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: tito_livio - Febbraio 15, 2025, 03:02:11 pm
Prova ad inserire nelle uses "printer.pas".

Niente da fare, anche inserendo questa unit il risultato è lo stesso:
unit1.pas(36,51) Error: Identifier not found "PoPortrait"

Comunque in attesa di una soluzione con il componente Lazreport sto creando l'etichetta con Forte4Lazarus.
Stampa perfettamente i barcode ed il testo sulla Zebra.
Forte4Lazarus è un bel componente per il reporting, molto più ricco di funzionalità rispetto a Lazreport.
Peccato che l'ultima versione risalga al 2011, non mi sembra che sia più seguito da chi l'ha creato.
Purtroppo l'interfaccia è in portoghese ma credo che troverò una soluzione.
Anni fa @antoniog ha tradotto il componennte in italiano e lo ha postato ma io non sono riuscito, almeno fino ad adesso a farlo funzionare.
Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: DragoRosso - Febbraio 15, 2025, 03:57:38 pm
Forse era "printers.pas" .. con la "s" finale  :o
Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: tito_livio - Febbraio 15, 2025, 04:25:05 pm
Forse era "printers.pas" .. con la "s" finale  :o

Si, infatti, mi sono messo poi a cercare meglio ed era Printers.pas, grazie.
Adesso, con printers.pas, compila ma stampa sempre solo una strisciolina di testo.
Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: tito_livio - Febbraio 22, 2025, 11:39:38 am
Aggiungo qualcosa che magari può esere utile a chi stampa etichette.
Nemmeno l'idea di stampare le etichette con Fortes4Lazarus è una idea praticabile, i barcode vengono stampati ma quasi sempre i lettori di barcode non riescono a leggerli.
Ho scritto anche sul forum internazionale ma non ho avuto ancora risposta.
Il fatto di non poter più stampare le etichette come una normale stampa (con design grafico wysiwyg e stampanti Zebra) è però, purtroppo, una grossa limitazione, almeno, per chi lavora in campo medico o logistico.
Funzionava fin dai tempi di Delphi3, per adesso ho risolto richiamando un programma esterno (compilato con una vecchia versione di Lazarus) che riesce a stampare le etichette.
Credo che segnalerò il problema come bug, vi tengo informati.
Ciao a tutti.
Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: Mimmo - Febbraio 24, 2025, 08:31:08 am
Credo che segnalerò il problema come bug, vi tengo informati.

Grazie! Le stampanti Zebra sono sempre una spina in un fianco. A me è capitato di dover dismettere un sistema di archiviazione fatture perchè né noi né l'assistenza del gestionale (Teamsystem) è riuscita a risolvere: barcode stampati ma illeggibili.
Titolo: Re:Problema con stampa etichette su Zebra e nuove versioni di Lazarus e Lazreport
Inserito da: tito_livio - Marzo 17, 2025, 01:48:25 pm
Come avevo detto, ho segnalato il bug a Lazarus e mi hanno detto di modificare il mio codice:

Codice: [Seleziona]
procedure TForm1.Button1Click(Sender: TObject);
begin
  frReport1.LoadFromFile('stampa_ETIC.lrf');
  frReport1.PrepareReport;
  frReport1.PrintPreparedReport('1', 1);
end; 

In questo modo:

Codice: [Seleziona]
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.