Differenze tra le versioni di "Stampare in Gambas"
Riga 56: | Riga 56: | ||
<Font Color=gray>' ''ATTENZIONE ! Con i metodi .RichText e .Text occorrerà un ".Fill":''</font> | <Font Color=gray>' ''ATTENZIONE ! Con i metodi .RichText e .Text occorrerà un ".Fill":''</font> | ||
− | .RichText("<I | + | .RichText("<I><B><U>Testo con RichText", 400, 500) |
.Text("Testo con Text", 500, 600) | .Text("Testo con Text", 500, 600) | ||
.'''Fill''' | .'''Fill''' |
Versione delle 19:05, 10 dic 2023
Indice
Stampare in Gambas
Stampare in Gambas con la Classe Printer
Per stampare in Gambas si usa la Classe Printer.
Questa Classe, creabile, consente di stampare su stampanti o in un file.
La stampa viene gestita con l'Evento "_Draw()" (come se si dovesse disegnare su una "DrawingArea").
Esempio (inseriamo sul form l'oggetto speciale "Printer" e scriviamo il seguente codice):
Public Sub Form_Open() TextLabel1.Text = "Testo della TextLabel" End Public Sub Button1_Click() With Printer1 ' opzionale - apre la finestra di dialogo se si vogliono reimpostare tutte le proprietà della stampante: .Configure ' opzionale - imposta la modalità di stampa "Verticale" (oppure "Orizzontale"): .Orientation = .Portrait ' opzionale - imposta il tipo di carta (A4): .Paper = .A4 ' opzionale - imposta la risoluzione di stampa (in DPI), per ottenere il risultato simile a quello che si vede sul monitor .Resolution = Desktop.Resolution ' opzionale - in questo caso stampa a colori: .GrayScale = False ' Effettua la stampa su foglio: .Print End With End Public Sub Printer1_Draw() ' Questo Evento è richiamato per ogni pagina da stampare. ' In questa routine saranno presenti le informazioni di ciò che si andrà a stampare. With Paint ' Volendo si può impostare la dimensione del font: .Font.Size = 12 ' Si può anche impostare il colore del testo: in questo caso a blu scuro. ' Se si intende usare il codice, sarà in esad. ad esempio: = Paint.Color(&H001F007F); ' in decimale: = Paint.Color(2031743) . .Brush = Paint.Color(Color.DarkBlue) ' Il testo sarà allineato al quadrilatero "virtuale" posto alle coordinate X, Y e di dimensioni W, H: .DrawText("Riga numero 1", 100, 200) ' Ma si potrà anche eliminare il riferimento a quelle dimensioni: .DrawText("Riga numero 2", 200, 300) ' Può essere stampato anche il contenuto di un Controllo di testo: .DrawText(TextLabel1.Text, 300, 400, TextLabel1.W, TextLabel1.H) ' ATTENZIONE ! Con i metodi .RichText e .Text occorrerà un ".Fill": .RichText("<I><B><U>Testo con RichText", 400, 500) .Text("Testo con Text", 500, 600) .Fill ' Si può anche ruotare il contenuto, da stampare, degli oggetti (in questo esempio di 45°). Poiché il Metodo ".Rotate()" richiede che gli sia passato un valore espresso in "Radianti", si potrà utilizzare in questo esempio la funzione "Rad()", per convertire i gradi in radianti. ' Il Metodo ".Translate() aggiusta la posizione del testo ruotato." .Translate(101, 202) .Rotate(Rad(45)) .DrawText("Riga numero 1 ruotata di 45°", 0, 0) .End End With End
Stampare un'immagine
E' possibile anche stampare un'immagine mediante il Metodo "Paint.DrawImage()"
Stampare in un file PDF
Se si intende stampare in un file ".pdf" (e quindi in sostanza creare un file ".pdf"), si dovrà utilizzare la Proprietà ".OutputFile", la quale deve essere posta prima del Metodo ".Print()".
Riprendendo il codice del paragrafo precedente:
Public Sub Button1_Click()
With Printer1
' opzionale - apre la finestra di dialogo, se si vogliono impostare le proprietà della stampante:
.Configure
.Orientation = .Portrait
' Imposta ad esempio la stessa risoluzione in DPI dello schermo:
.Resolution = Desktop.Resolution
.Paper = .A4
' Stampa in un file .pdf (crea un file PDF).
' La Proprietà ".OutputFile" deve essere posta prima del Metodo ".Print()".
.OutputFile = "/percorso/mio/file.pdf"
' Il Metodo ".Print()" va comunque previsto, ma in questo caso non stamperà su carta.
.Print
End With
End
In tali casi la Proprietà ".Paper" dell'oggetto Printer può passare, senza che l'utente l'abbia previsto, dal valore 2 (A4) a 0 (Custom). A questo riguardo Minisini ha fatto notare che la regola è: se si modifica la destinazione dell'Oggetto Printer, potrebbe essere necessario ridefinire le sue Proprietà. Una modifica della destinazione, come in questo caso, di Printer ripristina le sue Proprietà ai valori predefiniti solitamente associati al Printer nuovo.
Stampare un documento formato da più pagine
Qualora il documento da stampare sia formato da più pagine, bisognerà richiamare ed impostare la Proprietà ".Count" all'interno dell'Evento "_Begin()" dell'Oggetto Printer.
La Proprietà ".Count" dice quante pagine ci sono in una copia del documento. Se la Proprietà ".Count" non viene specificata, sarà stampata una sola pagina.
La procedura della stampa di più pagine prevede che al termine della stampa di una pagina - ossia alla fine dell'Evento "_Draw()" - l'Evento "_Draw()" venga abbandonato, e successivamente venga sollevato di nuovo automaticamente.
Poniamo il caso di voler stampare 20 pagine aventi contenuto diverso:
Private b As Byte Public Sub Button1_Click() With Printer1 .Configure .Orientation = .Portrait .GrayScale = False .Paper = .A4 .Print End With End Public Sub Printer1_Begin() Printer1.Count = 20 End Public Sub Printer1_Draw() Inc b With Paint .Font.Size = 18 .Brush = Paint.Color(Color.Red) .DrawText("Pagina " & CStr(b), 500, 1000, 400, 600) End With End
Inoltre, impostando la suddetta Proprietà ".Count" dell'Oggetto Printer ed aggiungendo a tale oggetto la nota Proprietà ".OutputFile", si potrà creare un documento PDF avente più di una pagina.
Stampare più copie
Per stampare più copie di una medesima o di più medesime pagine, bisognerà utilizzare la Proprietà ".NumCopies" dell'Oggetto Printer.
Public Sub Button1_Click() With Printer1 .Configure .Orientation = .Portrait .Paper = .A4 .NumCopies = 4 .Print End With End etc....etc....
Stampare un file PDF
Riguardo alla stampa di un file PDF rinviamo a questa pagina della wiki: Stampare un file PDF