La libreria
PdfWriter non ha bisogno di quella Gambas
gb.pdf, perchè il file lo scrive e non lo legge.
Per prima cosa ti porti
PdfWriter all'interno del tuo progetto.
Dato che la classe è dichiarata
PRIVATE, devi necessariamente crearne una tua derivata da
PdfWriter, scrivendo la seguente istruzione all'inizio del file della tua classe:
Al suo interno
PdfWriter ha tutte le funzionalità per scrivere pagine pdf, ma chiama due metodi, che devono essere presenti nella tua classe derivata:
PUBLIC FUNCTION Footer()
...
END
PUBLIC SUB Header()
...
END
Questi due metodi ti permettono di scrivere sulla pagina corrente, ovvero:
Footer: ti permette di scrivere sul fondo pagina, come ad esempio il numero della pagina corrente;
Header: ti permette di scrivere sulla testata della pagina.
I metodi vengono chiamati ad ogni nuova pagina, ma puoi anche evitare di utilizzarle.
In linea di principio, l'uso di
PdfWriter prevede:
1) creazione del documento, con le impostazioni di formato pagina (Landscape o Portrait), unità di misura (es mm=millimetri), dimensione della pagina (es. A4).
2) impostazione di alcune informazioni facoltative, ad es.: autore, creatore, soggetto, titolo, ecc.
3) apertura del documento (
Open)
4) impostazione del numero di pagine totale (
AliasNbPages)
5) scrittura della testata (
Header)
6) gestione delle pagine (
AddPage,
Bookmark), del colore (
SetTextColor) e del font (
SetFont)
7) scrittura del contenuto, ad es.:
- una serie di celle contenenti testo
- testo libero in vari formati, font, colori, e posizione
- immagini
- varie combinazioni
Implementando opportunamente la tua classe, puoi aggiungere ulteriori funzionalità, come ad esempio la lettura di un file o una tabella da un database, riportando i dati in formato colonnare sul documento pdf.
Io personalmente lo uso per creare dei report da un database, e per formattare le pagine di fatture.
Quindi, ritornando al tuo codice, la prima cosa da fare è quella di creare una nuova classe derivata da
PdfWriter, dopodiche il resto del tuo esempio credo possa andare, ma poi lo vedrai nel risultato finale.
Solo una nota: prima di scrivere nel documento, è necessario prima aprirlo con
Open(); quindi, prima di
AddPage, è necessario aggiungere un bel:
altrimenti
PdfWriter resta bloccato in uno stato inattivo...
Diciamo che questa è una prassi generale nella programmazione...
La funzione di chiusura viene eseguita automaticamente dal metodo
Output().
Più avanti ti indicherò qualche altra dritta per gestire, ad esempio la stampa del numero di pagina a fondo, o del totale pagine...