[PILLOLA] - Stampare buste o etichette singole con PHP

Ciao a tutti.

Premessa
Visto che ogni tanto qualcuno chiede come fare per stampare etichette o
buste prelevando i dati da mysql, e considerato che dovevo preparare uno script
per la stampa di buste/etichette singole per uso INTRANET ho pensato di divulgare
il seguente script sperando di fare cosa gradita ai pochi che utilizzano windows
(pochi si fa per dire....).

Si puo' fare referimento alla http://forum.html.it/forum/showthrea...hreadid=348674"
[PILLOLA] Le funzioni "printer" che sostanzialmente rappresenta una buona raccolta delle info del manuale php.

Prerequisiti
Per poter utilizzare il seguente script e' necessario essere su un sistema Windows
(qualunque) con PHP >= 4.0.4.

Verifichiamo di avere installato l'estensione PHP per la printer con phpinfo.php:
extension=php_printer.dll nel file php.ini.
Nella sezione "printer" dovreste verificare:
codice:
Printer Support  enabled  
Default printing device  HP DeskJet 815C Series Printer (nome vs printer, of course)
Module state  working  
RCS Version  $Id: printer.c,v 1.23 2002/05/17 18:49:42 fmk Exp $  

Directive Local - Value Master Value 
printer.default_printer HP DeskJet 815C Series Printer - HP DeskJet 815C Series Printer 
Se cosi' e', molto bene siete a posto. Altrimenti...

Aprite il file php.ini e cercate le seguenti righe:

codice:
;Windows Extensions
.....
;extension=php_printer.dll
e togliete il commento ( ; ) prima di "extension=php_printer.dll" (lascia stare ;Windows... )

Ora cercate:
codice:
[Printer]
printer.default_printer = ""
e scrivete tra le virgolette il nome della vostra printer. es.:
codice:
printer.default_printer = "HP DeskJet 815C Series Printer"
Come si fa a sapere come si chiama la tua printer? Boh! io non lo so,
tu comunque vai nel pannello di controllo, cerchi le stampanti e leggi il nome.
Tieni presente che per PHP default_printer sara' quella dichiarata nel file php.ini
e non quella che potrai cambiare in windows.
Chiaro questo per tutti, se cambiate la stampante o portate lo script sul PC della
suocera ricordatevi del nome della stampante nel file php.ini

Controllate il path delle extensions, che NON e' quello che trovate in :
PATH AND DIRECTORY, ma bensi' questo qua sotto:
codice:
; Directory in which the loadable extensions (modules) reside.
extension_dir = D:\php\extensions   (oppure)
extension_dir = "D:\php\extensions"
Mettetici o meno le " " php e' indifferente. Mentre invece gli dovete mettere i
codice:
\ backslashes
nel path di windows e gli / slash nel path unix.

Salvate il file e restartate Apache. Quindi con phpinfo.php verifichiamo che sia ora
correttamente installata la nostra stampante.

Nel post che segue trovate lo script che e' self-explanatory. Trovate anche la
composizione della tabella utilizzata nelle prove utile per chi inizia ora con php
nel caso ci volesse provare.

Alcune precisazioni: stampa solo immagini bit map (.bmp). La misura e' in pixel e quindi
non c'e' corripondenza con l'immagine a video (in stampa saranno piu' piccine).
In certi situazioni di errore durante le prove si e' reso necessario restartare
Apache. La prova prevedeva la stampa a range di 50 nominativi (tolta nello script).
Il numero di record da stampare contemporaneamente dipendera' dalla capacita' dello
spool di stampa e dalla memoria della vs. printer. Se andate in overflow perderete
dei dati da stampare senza che sia possibile darvene avviso.

Aspetto i vs. commenti e migliorie. Grazie e Ciao