Differenze tra le versioni di "Stampare in Gambas"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Si rinvia a questa pagina della Wiki: Printer")
 
 
(16 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Si rinvia a questa pagina della Wiki: [[Printer]]
+
=Stampare in Gambas=
 +
==Stampare in Gambas con la Classe Printer==
 +
Per stampare in Gambas si usa la Classe '''[https://gambaswiki.org/wiki/howto/print?l=it Printer]'''. <B><SUP>&#091;[[#Note|nota 1]]&#093;</sup></b>
 +
<BR>Questa Classe, creabile, consente di stampare <Span Style="text-decoration:underline">su stampanti o in un file</span>.
 +
<BR>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
 +
<Font Color=gray>' ''opzionale - apre la finestra di dialogo se si vogliono reimpostare tutte le proprietà della stampante:''</font>
 +
    .Configure
 +
<Font Color=gray>' ''opzionale - imposta la modalità di stampa "Verticale" (oppure "Orizzontale"):''</font>
 +
    .Orientation = .Portrait
 +
<Font Color=gray>' ''opzionale - imposta il tipo di carta (A4)'':</font>
 +
    .Paper = .A4
 +
<Font Color=gray>' ''opzionale - imposta la risoluzione di stampa (in DPI), per ottenere il risultato simile a quello che si vede sul monitor''</font>
 +
    .Resolution = Desktop.Resolution
 +
<Font Color=gray>' ''opzionale - in questo caso stampa a colori:''</font>
 +
    .GrayScale = False
 +
<Font Color=gray>' ''Effettua la stampa su foglio:''</font>
 +
    .Print
 +
  End With
 +
 +
End
 +
 +
 +
Public Sub Printer1_Draw()  <Font Color=gray>' ''Questo Evento è richiamato per ogni pagina da stampare.''</font>
 +
 +
<Font Color=gray>' ''In questa routine saranno presenti le informazioni di ciò che si andrà a stampare.''</font>
 +
 +
  With Paint
 +
 
 +
<Font Color=gray>' ''Volendo si può impostare la dimensione del font:''</font>
 +
    .Font.Size = 12
 +
   
 +
<Font Color=gray>' ''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) .''</font>
 +
    .Brush = Paint.Color(Color.DarkBlue)
 +
   
 +
<Font Color=gray>' ''Il testo sarà allineato al quadrilatero "virtuale" posto alle coordinate X, Y e di dimensioni W, H:''</font>
 +
    .DrawText("Riga numero 1", 100, 200)
 +
   
 +
<Font Color=gray>' ''Ma si potrà anche eliminare il riferimento a quelle dimensioni:''</font>
 +
    .DrawText("Riga numero 2", 200, 300)
 +
   
 +
<Font Color=gray>' ''Può essere stampato anche il contenuto di un Controllo di testo:''</font>
 +
    .DrawText(TextLabel1.Text, 300, 400, TextLabel1.W, TextLabel1.H)
 +
   
 +
<Font Color=gray>' ''ATTENZIONE ! Con i metodi .RichText  e .Text occorrerà un ".Fill":''</font>
 +
    .RichText("<I&gt;<B&gt;<U&gt;Testo con RichText", 400, 500)
 +
    .Text("Testo con Text", 500, 600)
 +
    .'''Fill'''
 +
 +
<Font Color=gray>' ''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."''</font>
 +
    .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 (<U>creare</u> un file PDF)==
 +
Se si intende stampare <Span Style="text-decoration:underline">in</span> un file ".pdf" (e quindi in sostanza <Span Style="text-decoration:underline">creare</span> un file ".pdf"), si dovrà utilizzare la Proprietà ".OutputFile", la quale deve essere posta <SPAN style="text-decoration:underline">prima</span> del Metodo ".Print()".
 +
<BR>Riprendendo il codice del paragrafo precedente:
 +
Public Sub Button1_Click()
 +
 +
  With Printer1
 +
<Font Color=gray>' ''opzionale - apre la finestra di dialogo, se si vogliono impostare le proprietà della stampante:''</font>
 +
    .Configure
 +
    .Orientation = .Portrait
 +
<Font Color=gray>' ''Imposta ad esempio la stessa risoluzione in DPI dello schermo:''</font>
 +
    .Resolution = Desktop.Resolution
 +
    .Paper = .A4
 +
<Font Color=gray>' ''Stampa '''in''' un file .pdf (crea un file PDF).''
 +
' ''La Proprietà ".OutputFile" deve essere posta <SPAN style="text-decoration:underline">prima</span> del Metodo ".Print()".''
 +
' ''A detta Proprietà va assegnato il nome del file PDF e il percorso ove esso sarà creato.''</font>
 +
    <FONT color=#B22222><B>.OutputFile</b></font> = <FONT color=#B22222>"</font><FONT color=darkgreen>''/percorso/del/futuro/file.pdf''</font><FONT color=#B22222>"</font>
 +
<Font Color=gray>' ''Il Metodo ".Print()" va comunque previsto, ma in questo caso non stamperà su carta.''</font>
 +
    .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 <SPAN style="text-decoration:underline">una sola</span> 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.<FONT color=#B22222>Count =</font> 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 <SPAN style="text-decoration:underline">più</span> di una pagina.
 +
 
 +
 
 +
==Stampare più copie==
 +
Per stampare più <SPAN style="text-decoration:underline">copie</span> 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
 +
    <FONT color=#B22222>.NumCopies =</font> 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]]
 +
 
 +
 
 +
 
 +
=Note=
 +
[1] <B><FONT Color=red>Vedere assolutamente questa pagina della wiki ufficiale di Gambas: https://gambaswiki.org/wiki/howto/print</font></b>

Versione attuale delle 11:34, 23 ott 2024

Stampare in Gambas

Stampare in Gambas con la Classe Printer

Per stampare in Gambas si usa la Classe Printer. [nota 1]
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 (creare 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()".
' A detta Proprietà va assegnato il nome del file PDF e il percorso ove esso sarà creato.
   .OutputFile = "/percorso/del/futuro/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


Note

[1] Vedere assolutamente questa pagina della wiki ufficiale di Gambas: https://gambaswiki.org/wiki/howto/print