…ovvero, PHP per stampare lato server.
Ecco la mia prima pillola sul forum PHP: un buon punto di partenza per capire come sfruttare le potenzialità di php per stampare documenti sulle stampanti del server.
Strumenti necessari:
- PHP v.4.2.2
- Apache 1.4.3
- una stampante
Per abilitare questa estensione, aprite il file “php.ini” e decommentate la riga
codice:
; extension=php_printer.dll
Bene, ora siamo pronti ad usare questa estensione!
Cominciamo un elenco (dal Manuale di Php) delle funzioni più importanti, che illustrerò in questa pillola:
printer_open — Apre la connessione ad una stampante
printer_close — Chiude una connessione aperta verso una stampante
printer_abort — Cancella il file di spool dalla stampante
printer_start_doc — Inizia un nuovo documento
printer_end_doc — Chiude il documento
printer_start_page — Inizia una nuova pagina
printer_end_page — Chiude la pagina attiva
printer_create_font — Crea un nuovo font
printer_select_font — Seleziona un font
printer_delete_font — Cancella un font
printer_draw_text — Scrive un testo
printer_draw_bmp — Disegna una bitmap
Detto questo, passiamo alla teoria (ma poca poca) poi alla pratica:
$stampante=printer_open(‘Epson Stylus Color 660’);
accetta come valore una normalissima stringa contenente il nome della stampante su cui vorrete usare, sì, proprio quello che potete reperire facendo (in win): “Start > Impostazioni > Stampanti”
Ovviamente è bene accendere la stampante prima di utilizzare queste funzioni, per non generare errori.
printer_close($stampante);
Questa funzione è analoga a “fclose()” per i files: chiude una sessione di stampa.
printer_abort($stampante);
Diversa dalla precedente serve se si vuole interrompere la stampa in casi di errore o imprevisti, anche se il processo di stampa non è finito. In parole povere, se cominciare ad inviare dati di stampa poi php trova questa funzione, stamperà i dati fino a li trasmessi, lasciando un testo o un immagine a metà e restituendo il foglio.
printer_start_doc($stampante,’Titolo del Documento’);
printer_end_doc($stampante);
Definiscono quando inizia e quando finisce un documento da stampare.
Attenzione! “documento” != “pagina”. Un documento infatti può avere più pagine.
printer_start_page($stampante);
printer_end_page($stampante);
Definiscono l’inizio e la fine di ogni pagina da stampare. La stampante, con questi comandi comincia un nuovo foglio (“pagina” == ”foglio”) ogni volta che vengono chiamati.
Facciamo ora il primo esempio pratico. Ne avevate voglia vero? 
Mettiamo assieme tutto ciò che sappiamo finora:
Codice PHP:
$stampante=printer_open(‘Epson Stylus Color 660’); // Apro la connessione
printer_start_doc($stampante,’Titolo del Documento’); // Inizio documento
printer_start_page($stampante); //Inizio pagina 1
/* Qui dentro scrivo la pagina 1 */
printer_end_page($stampante); // Fine pagina 1
printer_start_page($stampante); //Inizio pagina 2
/* Qui dentro scrivo la pagina 2 */
printer_end_page($stampante); // Fine pagina 2
printer_end_doc($stampante); // Fine documento
printer_close($stampante); // Chiudo la connessione
Questo non stampa ancora niente. Vediamo ora cosa si può stampare e come:
Dunque, abbiamo tre strumenti di stampa:
“Font” = Serve per scrivere del testo
“Pen” = Serve per disegnare forme geometriche
“Brush” = Serve per riempire di colore le forme geometriche
$font=printer_create_font(‘Arial’, 148, 76, PRINTER_FW_MEDIUM, false, false, false, -50);
Questa funzione prepara un font per essere utilizzato e accetta:
NOME DEL FONT
ALTEZZA
LARGHEZZA
SPESSORE (sono costanti predefinite, vedere il Manuale)
CORSIVO
SOTTOLINEATO
BARRATO
ORIENATMENTO (ovvero l’inclinazione in gradi)
printer_select_font($font);
Seleziona uno dei tanti font definiti all’inizio del documento per utilizzarlo immediatamente nella stampa.
printer_delete_font($font);
Cancella un font tra quelli definiti con “printer_create_font()”. Per stampare qualcosa con un font cancellato, bisogna ridefinirlo con “printer_create_font()”.
Funzioni analoghe esistono per gli strumenti “Pen” e “Brush”, qui omesse ma di facile comprensione dopo aver letto questa pillola.
printer_draw_text($stampante," MDSJACK è mitico!", 10, 10);
Utilizzata dopo printer_select_font(), questa funzione scrive il testo prescelto con il font prescelto. Gli ultimi due parametri sono le coordinate X Y in cui scrivere il testo.
printer_draw_bmp($stampante, "c:\\immagine.bmp", 10, 10);
Con questa funzione possiamo invece stampare una immagine a nostro piacimento, magari un logo, ricercandolo in un path. Gli ultimi 2 parametri sono le coordinate X Y.
ES: con le funzioni GD, si può convertire una immagine jpg in bmp poi stamparla.
Bene, ora sappiamo come usare queste sconosciute funzioni di php! :metallica Ecco il test finale
Codice PHP:
$stampante=printer_open(‘Epson Stylus Color 660’); // Apro la connessione
printer_start_doc($stampante,’Titolo del Documento’); // Inizio documento
printer_start_page($stampante); //Inizio pagina 1
$font=printer_create_font(‘Arial’, 148, 76, PRINTER_FW_MEDIUM, false, false, false, -50);
printer_select_font($font);
printer_draw_text($stampante,"MDSJACK è mitico!", 10, 10); // Ecco che scriviamo!!!
printer_delete_font($font);
printer_end_page($stampante); // Fine pagina 1
printer_start_page($stampante); //Inizio pagina 2
printer_draw_bmp($stampante, "c:\\immagine.bmp", 10, 10); //Ecco la nostra immagine!!!
printer_end_page($stampante); // Fine pagina 2
printer_end_doc($stampante); // Fine documento
printer_close($stampante); // Chiudo la connessione
Chi ha qualcosa da dire lo dica adesso o taccia per sempre 
ciao,
jack.