Differenze tra le versioni di "Creare un file PDF con le risorse del Componente gb.cairo"

Da Gambas-it.org - Wikipedia.
Riga 4: Riga 4:
  
 
Mostriamo di seguito un semplice esempio, nel quale è necessario attivare anche i Componenti "gb.image" e "gb.image.io".
 
Mostriamo di seguito un semplice esempio, nel quale è necessario attivare anche i Componenti "gb.image" e "gb.image.io".
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim pdf As CairoPdfSurface
 
   Dim pdf As CairoPdfSurface
 
   Dim x, y As Integer
 
   Dim x, y As Integer
 
   Dim im, im2 As Image
 
   Dim im, im2 As Image
 
 
    
 
    
 
  <FONT Color=gray>' ''Specifica la superficie grafica da creare per disegnarvi sopra, dimensionandola in "millimetri":''</font>
 
  <FONT Color=gray>' ''Specifica la superficie grafica da creare per disegnarvi sopra, dimensionandola in "millimetri":''</font>
  pdf = New CairoPdfSurface("''/percorso/del/file/pdf/da/creare''", 210.0, 297.0)
+
  pdf = New CairoPdfSurface("<FONT Color=darkgreen>''/percorso/del/file/pdf/da/creare''</font>", 210.0, 297.0)
 
    
 
    
 
  <FONT Color=gray>' ''Inizia il disegno sulla superficie impostata:''</font>
 
  <FONT Color=gray>' ''Inizia il disegno sulla superficie impostata:''</font>
  Cairo.Begin(pdf)
+
  Cairo.Begin(pdf)
 
      
 
      
 
  <FONT Color=gray>' ''Disegna un arco:''</font>
 
  <FONT Color=gray>' ''Disegna un arco:''</font>
  Cairo.LineWidth = 10.0
+
  Cairo.LineWidth = 10.0
  Cairo.Arc(300, 300, 100.0, 45.0 * (Pi / 180.0), 180.0 * (Pi / 180.0))
+
  Cairo.Arc(300, 300, 100.0, 45.0 * (Pi / 180.0), 180.0 * (Pi / 180.0))
  Cairo.Source = Cairo.ColorPattern(Color.Blue)    <FONT Color=gray>' ''Imposta il colore dell'elemento del disegno''</font>
+
  Cairo.Source = Cairo.ColorPattern(Color.Blue)    <FONT Color=gray>' ''Imposta il colore dell'elemento del disegno''</font>
  Cairo.Stroke
+
  Cairo.Stroke
 
   
 
   
 
      
 
      
 
  <FONT Color=gray>' ''Disegna un arco colorato pieno:''</font>
 
  <FONT Color=gray>' ''Disegna un arco colorato pieno:''</font>
  Cairo.LineWidth = 10.0
+
  Cairo.LineWidth = 10.0
  Cairo.ArcNegative(400, 300, 100.0, 45.0 * (Pi / 180.0), 180.0 * (Pi / 180.0))
+
  Cairo.ArcNegative(400, 300, 100.0, 45.0 * (Pi / 180.0), 180.0 * (Pi / 180.0))
  Cairo.Source = Cairo.ColorPattern(Color.Orange)
+
  Cairo.Source = Cairo.ColorPattern(Color.Orange)
  Cairo.Fill
+
  Cairo.Fill
 
      
 
      
 
   
 
   
 
  <FONT Color=gray>' ''Scrive il testo:''</font>
 
  <FONT Color=gray>' ''Scrive il testo:''</font>
  Cairo.Font.Size = 20
+
  Cairo.Font.Size = 20
  Cairo.Font.Name = "URW Palladio L"
+
  Cairo.Font.Name = "URW Palladio L"
 
      
 
      
  Cairo.Source = Cairo.ColorPattern(Color.Red)
+
  Cairo.Source = Cairo.ColorPattern(Color.Red)
  Cairo.MoveTo(100, 200)
+
  Cairo.MoveTo(100, 200)
  Cairo.DrawText("Drawtext")
+
  Cairo.DrawText("Drawtext")
  Cairo.Fill
+
  Cairo.Fill
 
      
 
      
  Cairo.Source = Cairo.ColorPattern(Color.Green)
+
  Cairo.Source = Cairo.ColorPattern(Color.Green)
  Cairo.MoveTo(400, 300)
+
  Cairo.MoveTo(400, 300)
  Cairo.Text("Text")
+
  Cairo.Text("Text")
  Cairo.Fill
+
  Cairo.Fill
 
      
 
      
 
      
 
      
 
  <FONT Color=gray>' ''Disegna 10x10 quadrati pieni:''</font>
 
  <FONT Color=gray>' ''Disegna 10x10 quadrati pieni:''</font>
  For x = 0 To 9
+
  For x = 0 To 9
    For y = 0 To 9
+
    For y = 0 To 9
      Cairo.Rectangle(200 + x * 10.0, 500 + y * 10.0, 5, 5)
+
      Cairo.Rectangle(200 + x * 10.0, 500 + y * 10.0, 5, 5)
    Next
+
    Next
  Next
+
  Next
  Cairo.Source = Cairo.ColorPattern(Color.Violet)
+
  Cairo.Source = Cairo.ColorPattern(Color.Violet)
  Cairo.Fill
+
  Cairo.Fill
+
 
 
 
  <FONT Color=gray>' ''Vengono inserite due immagini caricate da due file PNG:''</font>
 
  <FONT Color=gray>' ''Vengono inserite due immagini caricate da due file PNG:''</font>
  im = Image.Load("''/percorso/del/primo/file.png''")
+
  im = Image.Load("''/percorso/del/primo/file.png''")
  im2 = Image.Load("''/percorso/del/secondo/file.png''")
+
  im2 = Image.Load("''/percorso/del/secondo/file.png''")
 
   
 
   
  Cairo.Scale(1, 1)    <FONT Color=gray>' ''Non imposta alcuna modifica scalare all'immagine''</font>
+
  Cairo.Scale(1, 1)    <FONT Color=gray>' ''Non imposta alcuna modifica scalare all'immagine''</font>
  Cairo.Source = Cairo.ImagePattern(im, 200, 200)
+
  Cairo.Source = Cairo.ImagePattern(im, 200, 200)
  Cairo.Paint          <FONT Color=gray>' ''Disegna la prima immagine sulla superficie PDF''</font>
+
  Cairo.Paint          <FONT Color=gray>' ''Disegna la prima immagine sulla superficie PDF''</font>
 
      
 
      
  Cairo.Scale(0.5, 0.5)    <FONT Color=gray>' ''Riduce della metà la dimensione della seconda immagine da disegnare sulla superficie PDF''</font>
+
  Cairo.Scale(0.5, 0.5)    <FONT Color=gray>' ''Riduce della metà la dimensione della seconda immagine da disegnare sulla superficie PDF''</font>
  Cairo.Source = Cairo.ImagePattern(im2, 300, 300)
+
  Cairo.Source = Cairo.ImagePattern(im2, 300, 300)
  Cairo.Paint          <FONT Color=gray>' ''Disegna la seconda immagine sulla superficie PDF''</font>
+
  Cairo.Paint          <FONT Color=gray>' ''Disegna la seconda immagine sulla superficie PDF''</font>
 
    
 
    
 
    
 
    
 
  <FONT Color=gray>' ''Termina il disegno:''</font>
 
  <FONT Color=gray>' ''Termina il disegno:''</font>
  Cairo.End
+
  Cairo.End
 
    
 
    
  '''End'''
+
  End
  
  
Riga 93: Riga 91:
 
   Next
 
   Next
 
    
 
    
  '''End'''
+
  End
 +
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  Public Sub Button1_Click()
 
    
 
    
 
   Dim dw As DesktopWindow
 
   Dim dw As DesktopWindow
Riga 119: Riga 118:
 
   End With
 
   End With
 
    
 
    
  '''End'''
+
  End
  
  

Versione delle 10:18, 29 set 2023

Il Componente di Gambas gb.cairo consente, fra l'altro, di creare file PDF disegnandovi figure, testo, immagini ed in generale ogni altro elemento di disegno.

E' necessario impostare innanzitutto la superficie grafica di tipo PDF, sulla quale disegnare; quindi iniziare il disegno con la Classe Cairo.

Mostriamo di seguito un semplice esempio, nel quale è necessario attivare anche i Componenti "gb.image" e "gb.image.io".

Public Sub Main()
 
 Dim pdf As CairoPdfSurface
 Dim x, y As Integer
 Dim im, im2 As Image
 
' Specifica la superficie grafica da creare per disegnarvi sopra, dimensionandola in "millimetri":
 pdf = New CairoPdfSurface("/percorso/del/file/pdf/da/creare", 210.0, 297.0)
  
' Inizia il disegno sulla superficie impostata:
 Cairo.Begin(pdf)
   
' Disegna un arco:
 Cairo.LineWidth = 10.0
 Cairo.Arc(300, 300, 100.0, 45.0 * (Pi / 180.0), 180.0 * (Pi / 180.0))
 Cairo.Source = Cairo.ColorPattern(Color.Blue)    ' Imposta il colore dell'elemento del disegno
 Cairo.Stroke

   
' Disegna un arco colorato pieno:
 Cairo.LineWidth = 10.0
 Cairo.ArcNegative(400, 300, 100.0, 45.0 * (Pi / 180.0), 180.0 * (Pi / 180.0))
 Cairo.Source = Cairo.ColorPattern(Color.Orange)
 Cairo.Fill
   

' Scrive il testo:
 Cairo.Font.Size = 20
 Cairo.Font.Name = "URW Palladio L"
   
 Cairo.Source = Cairo.ColorPattern(Color.Red)
 Cairo.MoveTo(100, 200)
 Cairo.DrawText("Drawtext")
 Cairo.Fill
   
 Cairo.Source = Cairo.ColorPattern(Color.Green)
 Cairo.MoveTo(400, 300)
 Cairo.Text("Text")
 Cairo.Fill
   
   
' Disegna 10x10 quadrati pieni:
 For x = 0 To 9
   For y = 0 To 9
     Cairo.Rectangle(200 + x * 10.0, 500 + y * 10.0, 5, 5)
   Next
 Next
 Cairo.Source = Cairo.ColorPattern(Color.Violet)
 Cairo.Fill
 
' Vengono inserite due immagini caricate da due file PNG:
 im = Image.Load("/percorso/del/primo/file.png")
 im2 = Image.Load("/percorso/del/secondo/file.png")

 Cairo.Scale(1, 1)    ' Non imposta alcuna modifica scalare all'immagine
 Cairo.Source = Cairo.ImagePattern(im, 200, 200)
 Cairo.Paint          ' Disegna la prima immagine sulla superficie PDF
   
 Cairo.Scale(0.5, 0.5)    ' Riduce della metà la dimensione della seconda immagine da disegnare sulla superficie PDF
 Cairo.Source = Cairo.ImagePattern(im2, 300, 300)
 Cairo.Paint          ' Disegna la seconda immagine sulla superficie PDF
 
  
' Termina il disegno:
 Cairo.End
 
End


Inserire in un file PDF un Oggetto grafico presente sul Form

In quest'altro esempio si creerà un file PDF ponendovi una "GridView", presente sul "Form", con il testo contenuto nelle sue celle.
E' necessario attivare anche il Componente "gb.desktop.x11".

Public Sub Form_Open()
 
 Dim r, c As Byte
 
 With GridView1
   .Rows.Count = 5
   .Columns.Count = 5
 End With
  
 For r = 0 To 4
   For c = 0 To 4
     GridView1[r, c].Text = "abcde"
   Next 
 Next
 
End


Public Sub Button1_Click()
  
 Dim dw As DesktopWindow
 Dim pdf As CairoPdfSurface
 Dim im As Image
 
' Individua la "finestra" della "GridView" dal suo identificativo:
 With dw = New DesktopWindow(GridView1.Handle)
' Cattura l'immagine della "GridView":
   im = .GetScreenshot(True).Image
 End With
 
' Imposta la superficie di disegno del futuro file PDF.
' Il primo argomento imposta il percorso ove sarà salvato il futuro file PDF.
' Il secondo e il terzo argomento dimensionano in "millimetri" il futuro file PDF.
 pdf = New CairoPdfSurface("/tmp/file.pdf", 210.0, 297.0)
 
 With Cairo
   .Begin(pdf)
   .Source = Cairo.ImagePattern(im, 100, 100)
   .Paint 
   .End
 End With
 
End


Riferimenti