Differenze tra le versioni di "Stampare un file PDF"

Da Gambas-it.org - Wikipedia.
 
(4 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
<FONT Color=red><B>ATTENZIONE !
+
Mostreremo di seguito due opzioni per stampare un file PDF (ossia il contenuto grafico/testuale di un file PDF).
  
IL COMPONENTE GB.PDF E' ORMAI OBSOLETO !</b></font>
+
==Stampa con le risorse del Componente gb.poppler==
 
 
 
 
Mostreremo di seguito due opzioni per stampare un file PDF.
 
 
 
==Stampa con le sole funzioni di Gambas==
 
 
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:
 
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'';
 
* attivare il componente ''gb.poppler'';
Riga 14: Riga 9:
 
    
 
    
 
    
 
    
  '''Public''' Sub Form_Open()   
+
  Public Sub Form_Open()   
 
      
 
      
 
   Dim p As PdfDocument
 
   Dim p As PdfDocument
 
    
 
    
 
  <FONT color=gray>' ''Carica il file PDF del documento da stampare:''</font>
 
  <FONT color=gray>' ''Carica il file PDF del documento da stampare:''</font>
   p = New PdfDocument("<FONT color=gray>''/percorso/del/file.pdf''</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>
 
  <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)
 
   im = p[0].Render(0, 0, p[0].W, p[0].H, 0, p.Resolution)
 
    
 
    
  '''End''' 
+
  End
 
    
 
    
 
    
 
    
  '''Public''' Sub Button1_Click()   
+
  Public Sub Button1_Click()   
 
    
 
    
 
   With Printer1   
 
   With Printer1   
Riga 34: Riga 29:
 
     .Paper = Printer.A4    <FONT color=gray>' ''Opzionale - imposta il tipo di carta''</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>  
 
     .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>
+
     .Print    <FONT color=gray>' ''Effettua la stampa su foglio''</font>
 
   End With
 
   End With
 
    
 
    
  '''End''' 
+
  End
 
    
 
    
 
    
 
    
  '''Public''' Sub Printer1_Draw()    <FONT color=gray>' ''Questo evento è richiamato per ogni pagina da stampare.''</font>
+
  Public Sub Printer1_Draw()    <FONT color=gray>' ''Questo evento è richiamato per ogni pagina da stampare.''</font>
 
    
 
    
 
  <FONT color=gray>' ''Queste sono le informazioni di ciò che si andrà a stampare:''</font>
 
  <FONT color=gray>' ''Queste sono le informazioni di ciò che si andrà a stampare:''</font>
Riga 48: Riga 43:
 
   End With   
 
   End With   
 
    
 
    
  '''End'''
+
  End
  
  
 
===Stampare un documento PDF formato da due o più pagine===
 
===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:
 
Se il documento PDF è composto da due o più pagine potremo adottare il seguente codice:
  '''Private''' pdf As PdfDocument
+
  Private p As PdfDocument
  '''Private''' pc As New Picture[]
+
  Private iimm As Image[]
  '''Private''' j As Short
+
  Private j As Short
 
   
 
   
 
   
 
   
  '''Public''' Sub Button1_Click()
+
  Public Sub Form_Open()
 +
 
 +
  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>")
 +
 
 +
  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
 
   
 
   
  Dim b As Byte
 
 
   
 
   
  With pdf
+
  Public Sub Button1_Click()
    .Open("<FONT color=gray>''/percorso/del/file.pdf''</font>")
 
    If .Ready = True Then
 
<FONT color=#006400>' ''Convertiamo ogni pagina del documento in una "Image",''
 
' ''e poi l' "image" in una "Picture"...''</font> 
 
    For b = 1 To pdf.Count
 
<FONT color=#006400>' ''Ogni nuova "Picture" sarà posta in un elemento
 
  ' ''di una variabile array di tipo "Picture":''</font>
 
      pc.Add(pdf[b].Image.Picture)
 
    Next
 
 
   
 
   
     With printer = New Printer As "printer"
+
  With Printer1 
    .Resolution = Desktop.Resolution
+
    .Configure    <FONT color=gray>' ''Opzionale - apre la finestra di dialogo se si vuole impostare la stampante''</font>
    .Configure
+
     .Orientation = Printer.Portrait    <FONT color=gray>' ''Opzionale: imposta la modalità di stampa "Verticale" (oppure "Orizzontale").''</font>
    .Orientation = 0
+
    .Paper = Printer.A4    <FONT color=gray>' ''Opzionale - imposta il tipo di carta''</font>
    .Paper = 2
+
    .Resolution = Desktop.Resolution  <FONT color=gray>' ''Opzionale: modificando il valore di questa proprietà si modificano le dimensioni di stampa''</font>
    .Print
+
    .Print   <FONT color=gray>' ''Effettua la stampa su foglio''</font>
  End With
+
  End With
 
   
 
   
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub printer_Begin()
+
  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
 +
 
 +
End
 
   
 
   
<FONT color=#006400>' ''Diaciamo all'oggetto ''Printer'' di stampare un numero di pagine''
 
' ''pari al numero complessivo delle pagine di cui è composto il documento pdf:''</font> 
 
  Printer.Count = pdf.Count
 
 
   
 
   
  '''End'''
+
  Public Sub Printer1_Draw()
 
   
 
   
+
  <FONT color=gray>' ''Quindi stampiamo ciascuna pagina specificando le sue dimensioni e coordinate:''</font>   
'''Public''' Sub printer_Draw()
 
 
  <FONT color=#006400>' ''Quindi stampiamo ciascuna pagina specificando le sue dimensioni e coordinate:''</font>   
 
 
   With Paint
 
   With Paint
     .DrawPicture(pc[j], PictureBox1.X, PictureBox1.Y, pc[j].W, pc[j].H)
+
     .DrawImage(iimm[j], 0, 0, iimm[j].W, iimm[j].H)
 
     .Fill  
 
     .Fill  
 
   End With
 
   End With
 
    
 
    
 
   Inc j
 
   Inc j
+
 
'''End'''
+
  End
 
 
 
 
==Utilizzare il codice HTML==
 
Quest'altra modalità prevede una procedura ''mediata'' per giungere alla stampa del file PDF. Infatti il codice HTML aprirà il file PDF all'interno del programma predefinito di lettura dei file PDF. Da questo programma, poi, si procederà alla stampa.
 
 
 
Faremo uso di un ''MessageBox'' per contenere il codice HTML:
 
'''Public''' Sub Button1_Click()
 
 
  Message.Info("<A href=<FONT color=gray>''/percorso/del/file.pdf</font>''>Apri file PDF")
 
 
  '''End'''
 

Versione attuale delle 08:42, 16 set 2024

Mostreremo di seguito due opzioni per stampare un file PDF (ossia il contenuto grafico/testuale di 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