Differenze tra le versioni di "Stampare un file PDF"

Da Gambas-it.org - Wikipedia.
(Nuova pagina: Mostreremo di seguito una semplice modalità per stampare in modo elementare un file PDF. Sarà necessario * attivare il componente ''gb.pdf''; * inserire sul ''Form'' l'oggetto speci...)
 
(14 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Mostreremo di seguito una semplice modalità per stampare in modo elementare un file PDF.
+
Mostreremo di seguito due opzioni per stampare un file PDF.
  
Sarà necessario
+
==Stampa con le risorse del Componente gb.poppler==
* attivare il componente ''gb.pdf'';
+
Per stampare in modo elementare un file PDF con le sole funzioni di Gambas, possiamo utilizzare la seguente semplice modalità, per la quale sarà necessario:
 +
* attivare il componente ''gb.poppler'';
 
* inserire sul ''Form'' l'oggetto speciale ''Printer'';
 
* inserire sul ''Form'' l'oggetto speciale ''Printer'';
* inserire sul ''Form'' un ''Button'';
+
* inserire sul ''Form'' un ''Button''.
* inserire sul ''Form'' una ''ScrollView'' della stessa dimensione del ''Form'';
+
  Private im As Image  
* all'interno della ''ScrollView'' si dovrà inserire una ''PictureBox'' della stessa dimensione.
+
 
  '''Private''' pdf As New PdfDocument  
 
'''Private''' pc As Picture 
 
 
    
 
    
 +
Public Sub Form_Open() 
 +
   
 +
  Dim p As PdfDocument
 +
 
 +
<FONT color=gray>' ''Carica il file PDF del documento da stampare:''</font>
 +
  p = New PdfDocument("<FONT color=darkgreen>''/percorso/del/file.pdf''</font>")
 +
 
 +
<FONT color=gray>' ''Ottiene un'immagine della prima pagina (indice zero) del documento pdf caricato:''</font>
 +
  im = p[0].Render(0, 0, p[0].W, p[0].H, 0, p.Resolution)
 +
 
 +
End
 +
 
 +
 
 +
Public Sub Button1_Click() 
 
    
 
    
'''Public''' Sub Form_Open()  
+
  With Printer1  
      
+
     .Configure   <FONT color=gray>' ''Opzionale - apre la finestra di dialogo se si vuole impostare la stampante''</font>
   With pdf 
+
    .Orientation = Printer.Portrait    <FONT color=gray>' ''Opzionale: imposta la modalità di stampa "Verticale" (oppure "Orizzontale").''</font>  
<FONT color=#006400>' ''Carichiamo il file PDF del documento da mostrare:''</font>
+
    .Paper = Printer.A4    <FONT color=gray>' ''Opzionale - imposta il tipo di carta''</font>  
    .Open("percorso_del_mio_file.pdf") 
+
    .Resolution = Desktop.Resolution  <FONT color=gray>' ''Opzionale: modificando il valore di questa proprietà si modificano le dimensioni di stampa''</font>  
<FONT color=#006400>' ''Se il file pdf è stato caricato correttamente...''</font>
+
    .Print    <FONT color=gray>' ''Effettua la stampa su foglio''</font>
    If .Ready = True Then 
+
  End With
<FONT color=#006400>' ''...allora convertiamo la prima pagina ("indice" delle pagine = 1) in una "Image",''
 
' ''e quindi l' "image" in una "Picture"...''</font>
 
      pc = pdf[1].Image.Picture 
 
<FONT color=#006400>' '' ...che così potremo caricare nella "PictureBox":''</font>  
 
      PictureBox1.Picture = pc 
 
<FONT color=#006400>' ''Adattiamo la dimensione della "PictureBox" alla dimensione della pagina pdf:''</font>
 
      PictureBox1.Resize(pdf[1].Width, pdf[1].Height) 
 
 
    Else 
 
<FONT color=#006400>' ''Altrimenti mostriamo una messaggio di avviso:''</font>
 
      Message.Error("&lt;FONT color=darkred>Errore nel caricamento del file PDF !") 
 
   
 
    Endif 
 
 
    
 
    
  End With 
+
End
 
    
 
    
'''End''' 
 
 
    
 
    
 +
Public Sub Printer1_Draw()    <FONT color=gray>' ''Questo evento è richiamato per ogni pagina da stampare.''</font>
 
    
 
    
  <FONT color=#006400>' ''Prevediamo l'utilizzo, volendo, anche di una "ScrollView",''
+
  <FONT color=gray>' ''Queste sono le informazioni di ciò che si andrà a stampare:''</font>
' ''che agevolerà la visualizzazione anche in caso di ridimensionamento del Form:''</font>
+
  With Paint  
  '''Public''' Sub Form_Resize()   
+
    .DrawImage(im, 0, 0, im.W, im.H)
 +
    .Fill 
 +
  End With  
 
    
 
    
  ScrollView1.Resize(FMain.W - 10, FMain.H - 10)
+
End
 +
 
 +
 
 +
===Stampare un documento PDF formato da due o più pagine===
 +
Se il documento PDF è composto da due o più pagine potremo adottare il seguente codice:
 +
Private p As PdfDocument
 +
Private iimm As Image[]
 +
Private j As Short
 +
 +
 +
Public Sub Form_Open()
 
    
 
    
'''End''' 
+
  Dim c As Short
 
    
 
    
 +
<FONT color=gray>' ''Carica il file PDF del documento da stampare:''</font>
 +
  p = New PdfDocument("<FONT color=darkgreen>''/percorso/del/file.pdf''</font>")
 
    
 
    
'''Public''' Sub Button1_Click() 
+
  iimm = New Image[]
 
    
 
    
  With Printer1 
+
  For c = 0 To p.Max
    .Configure    <FONT color=#006400>' ''opzionale - apre la finestra di dialogo se si vuole impostare la stampante.''</font>
+
     iimm.Push(p[c].Render(0, 0, p[c].W, p[c].H, 0, p.Resolution))
    .Orientation = 0     <FONT color=#006400>' ''opzionale - (oppure: Printer1.Portrait) imposta la modalità di stampa "Verticale" (oppure "Orizzontale").''</font>
+
  Next
    .Paper = 2    <FONT color=#006400>' ''opzionale - imposta il tipo di carta ( 2 = A4).''</font>
 
    .Resolution = Desktop.Resolution     <FONT color=#006400>' ''opzionale - modificando il valore di questa proprietà si ottiene una stampa più grande o più piccola.''</font>
 
    .Print        <FONT color=#006400>' ''effettua la stampa su foglio.''</font>
 
  End With 
 
 
    
 
    
  '''End'''   
+
  End
 +
 +
 +
Public Sub Button1_Click()
 +
 +
  With Printer1 
 +
    .Configure    <FONT color=gray>' ''Opzionale - apre la finestra di dialogo se si vuole impostare la stampante''</font>
 +
    .Orientation = Printer.Portrait    <FONT color=gray>' ''Opzionale: imposta la modalità di stampa "Verticale" (oppure "Orizzontale").''</font>
 +
    .Paper = Printer.A4    <FONT color=gray>' ''Opzionale - imposta il tipo di carta''</font>
 +
    .Resolution = Desktop.Resolution  <FONT color=gray>' ''Opzionale: modificando il valore di questa proprietà si modificano le dimensioni di stampa''</font>
 +
    .Print    <FONT color=gray>' ''Effettua la stampa su foglio''</font>
 +
  End With
 +
 +
End
 +
 +
 +
  Public Sub Printer1_Begin()
 
    
 
    
 +
<FONT color=gray>' ''Dice all'oggetto ''Printer'' di stampare un numero di pagine pari al numero totale delle pagine di cui è composto il documento pdf:''</font> 
 +
  Printer1.Count = p.Count
 
    
 
    
  '''Public''' Sub Printer1_Draw()   <FONT color=#006400>' ''Questo evento è richiamato per ogni pagina da stampare.''</font>  
+
  End
 +
 +
 +
Public Sub Printer1_Draw()
 +
 +
<FONT color=gray>' ''Quindi stampiamo ciascuna pagina specificando le sue dimensioni e coordinate:''</font>
 +
  With Paint
 +
    .DrawImage(iimm[j], 0, 0, iimm[j].W, iimm[j].H)
 +
    .Fill
 +
  End With
 
    
 
    
<FONT color=#006400>' ''Queste sono le informazioni di ciò che si andrà a stampare:''</font>
+
  Inc j
  With Paint 
 
    .DrawPicture(pc, PictureBox1.X, PictureBox1.Y, pc.W, pc.H) 
 
    .Fill 
 
  End With 
 
 
    
 
    
  '''End'''
+
  End

Versione delle 09:45, 4 lug 2024

Mostreremo di seguito due opzioni per stampare un file PDF.

Stampa con le risorse del Componente gb.poppler

Per stampare in modo elementare un file PDF con le sole funzioni di Gambas, possiamo utilizzare la seguente semplice modalità, per la quale sarà necessario:

  • attivare il componente gb.poppler;
  • inserire sul Form l'oggetto speciale Printer;
  • inserire sul Form un Button.
Private im As Image  
  
 
Public Sub Form_Open()  
   
 Dim p As PdfDocument
 
' Carica il file PDF del documento da stampare:
 p = New PdfDocument("/percorso/del/file.pdf")
 
' Ottiene un'immagine della prima pagina (indice zero) del documento pdf caricato:
 im = p[0].Render(0, 0, p[0].W, p[0].H, 0, p.Resolution)
  
End
 
 
Public Sub Button1_Click()  
 
 With Printer1  
   .Configure    ' Opzionale - apre la finestra di dialogo se si vuole impostare la stampante
   .Orientation = Printer.Portrait    ' Opzionale: imposta la modalità di stampa "Verticale" (oppure "Orizzontale"). 
   .Paper = Printer.A4     ' Opzionale - imposta il tipo di carta 
   .Resolution = Desktop.Resolution   ' Opzionale: modificando il valore di questa proprietà si modificano le dimensioni di stampa 
   .Print    ' Effettua la stampa su foglio
 End With
 
End
 
 
Public Sub Printer1_Draw()    ' Questo evento è richiamato per ogni pagina da stampare.
 
' Queste sono le informazioni di ciò che si andrà a stampare:
 With Paint  
   .DrawImage(im, 0, 0, im.W, im.H)  
   .Fill  
 End With  
 
End


Stampare un documento PDF formato da due o più pagine

Se il documento PDF è composto da due o più pagine potremo adottare il seguente codice:

Private p As PdfDocument
Private iimm As Image[]
Private j As Short


Public Sub Form_Open()
 
 Dim c As Short
 
' Carica il file PDF del documento da stampare:
 p = New PdfDocument("/percorso/del/file.pdf")
 
 iimm = New Image[]
 
 For c = 0 To p.Max
   iimm.Push(p[c].Render(0, 0, p[c].W, p[c].H, 0, p.Resolution))
 Next
 
End


Public Sub Button1_Click()

 With Printer1  
   .Configure    ' Opzionale - apre la finestra di dialogo se si vuole impostare la stampante
   .Orientation = Printer.Portrait    ' Opzionale: imposta la modalità di stampa "Verticale" (oppure "Orizzontale"). 
   .Paper = Printer.A4     ' Opzionale - imposta il tipo di carta 
   .Resolution = Desktop.Resolution   ' Opzionale: modificando il valore di questa proprietà si modificano le dimensioni di stampa 
   .Print    ' Effettua la stampa su foglio
 End With

End


Public Sub Printer1_Begin()
 
' Dice all'oggetto Printer di stampare un numero di pagine pari al numero totale delle pagine di cui è composto il documento pdf:  
 Printer1.Count = p.Count
 
End


Public Sub Printer1_Draw()

' Quindi stampiamo ciascuna pagina specificando le sue dimensioni e coordinate:  
 With Paint
   .DrawImage(iimm[j], 0, 0, iimm[j].W, iimm[j].H)
   .Fill 
 End With
 
 Inc j
 
End