La stampa di etichette è una funzionalità presente in molti gestionali e sicuramente indispensabile per quei clienti che hanno a che fare con la spedizione di lettere e simili.
Per le applicazioni web, le strade percorribili non sono molte; in questo articolo mostro una soluzione che ho trovato molto soddisfacente.
Utilizzo
La classe che ho scritto estende le funzionalità di un’altra, scritta da Laurent Passebecq, che esegue la maggior parte del lavoro. Quest’ultima si occupa di creare e restituire un file PDF, scrivendo il testo, secondo la configurazione del formato dell’etichetta. All’interno delle due classi sono già presenti alcuni formati, ma è comunque possibile passare come parametro del costruttore anche un nuovo formato.
Nel seguente esempio stampo una singola etichetta nel formato 101700 (70×36 mm):
// crea l'oggetto e imposta il formato $pdf = new PdfLabel(PdfLabel::$labelFormats['101700']); $pdf->Open(); // font size $pdf->Set_Font_Size(10); // font family $pdf->Set_Font_Name('arial'); // numero di etichette da lasciare vuote $pdf->skipLabels(0); // testo dell'etichetta $text = "Mario Rossi\n"; $text.= "via Garibaldi n.116\n"; $text.= "47900 Rimini (RN)\n"; $text.= "ITALIA"; $pdf->Add_PDF_Label($text); // output del PDF con le etichette $pdf->Output('labels.pdf','D');
Tra le feature più evolute, è possibile stampare il foglio dando un offset di etichette da lasciare vuote; questa funzionalità è molto utile nel caso in cui si voglia utilizzare un foglio che è già stato precedentemente stampato.
Demo
La demo è consultabile a questa pagina
Download
Il pacchetto completo è scaricabile QUI
Risorse
http://www.fpdf.org/
http://www.fpdf.org/en/script/script29.php
Ciao, sto cercando di utilizzare il pacchetto per la stampa etichette, ma effettuando delle prove ottengo vari errori: con quale versione di PHP si può utilizzare il tutto ?
penso sia sufficiente avere una versione > 5.2
che genere di errori hai?
Ciao, complimenti per il blog.
E’ possibile definire un size o un colore diverso per le diverse righe dell’etichetta. Avrei bisogno di aumentare solo la dimensione di una riga !
Grazie
il colore non saprei, però la dimensione delle etichette può essere modificata in modo da creare qualunque tipo di etichetta: controlla come si definisce un formato di etichetta dentro la classe PdfLabel e così pure in PDF_Label
Grazie, ma non riesco proprio a cambiare la dimensione del font su una singola riga. Se cambio il parametro $pdf->Set_Font_Size(12); chiaramente viene applicato all’intera etichetta. Non è possibile definire questo parametro per la singola riga dell’ etichetta ?
(in questo caso le righe sono definite come array )
Grazie
Ciao ho implementato la stampa e va alla grande, solo un piccolo problema: le etichette vengono stampate per colonna occupando l’intera pagina in vercale, come posso fare per stamparle su righe orizzontali?
Grazie 🙂
Ok risolto bisogna invertire X e Y nella function Add_PDF_Label
come si può adattare lo script al recupero dati da un database mysql?
il suo script prende sempre lo stesso utente…
saprebbe aiutarmi?
grazie infinite
Molto interessante, ma effettivamente si può estendere a una rubrica intera da una tabella di un database? appunto come chiedeva credo anche stanislao, grazie e complimenti.
certo, si può estendere in modo da utilizzare una qualunque fonte di dati, quello proposto è solo un semplice esempio per illustrare il funzionamento.
Ad esempio se si volessero prendere i dati da un database MySQL:
Ciao! Complimenti! Ma volevo sapere una cosa..
Ho aggiunto al tuo codice un nuovo tipo di etichetta delle dimensioni che interessa a me:
/* ETICHETTE 52 x 30 */
‘276883’ => array(
‘name’=>’276883’,
‘paper-size’=>’A4’,
‘metric’=>’mm’,
‘marginLeft’=>0,
‘marginTop’=>0,
‘NX’=>4,
‘NY’=>10,
‘SpaceX’=>0,
‘SpaceY’=>0,
‘width’=>52,
‘height’=>30,
‘font-size’=>8
così come nel file PDF_label:
‘276883’=>array(‘name’=>’276883′,’paper-size’=>’A4’, ‘metric’=>’mm’, ‘marginLeft’=>0,’marginTop’=>0, ‘NX’=>4,’NY’=>10,’SpaceX’=>0,’SpaceY’=>0, ‘width’=>52,’height’=>30,’font-size’=>8),
ma quando provo lo script mi restituisce questo errore:
FPDF error: Incorrect unit:
Potete aiutarmi in qualche modo? sbaglio qualcosa?
Grazie mille!!
Ciao Marco,
sei andato molto vicino alla soluzione!! Era sufficiente modificare solo il file “PdfLabel.php” con il codice che mi hai scritto!
Trovi il pacchetto funzionante a questo link: http://www.andreaventuri.it/files/pdflabel-mod.zip
Complimenti per l’ottimo lavoro.
Una domanda: è possibile inserire, sull’etichetta un’immagine e avere i testi con font diversi, per esempio, nome cognome in grassetto e il resto normale?
Ringrazio anticipatamente.
attualmente purtroppo non è possibile
Ciao Andrea, non riesco a risolvere un problema.
La mia necessità è:
Realizzato un generatore di etichette, ovvero:
– prendere i dati da un database mysql
– creare etichetta solo per i dati con il checkbox ETICHETTA è VERA
– Nel dababase ci sono due campi “IndirizzoAziendale” ed IndirizzoPrivato”, se indirizzo privato è vuoto stampa il nome della società + c.a (cortese attenzione) + NOME. altrimenti se l’indirizzo privato c’è, stampa direttamente NOME+COGNOME ecc ecc insomma, senza il nome societa e il c.a
E’ fattibile?