Un generatore di report RTF

di Davide Bianchi, in ASP - Scripting,

Abbiamo fatto il lavoro, è tutto pronto, o quasi. Il database funziona come un orologio svizzero (no, non fà cucu). I dati possono essere visionati in 42 modi diversi, le tabelle vengono preparate, abbiamo perfino scovato il maledetto Applet Java per visualizzare i grafici come piace a quel xyz del cliente, abbiamo tutto.... ma le stampe?

Ebbene sì, ammettiamolo: le stampe fatte dal browser fanno veramente pena!

Non c'è modo di controllare se l'orientamento è in Orizzontale o in Verticale, va a capo quando vuole lui, spezza le tabelle a metà che fa paura, non si riesce ad impostare niente!

La verità è che il browser non è stato pensato per stampare, e le stampe che si riesce ad ottenere dal browser "nudo e crudo" non sono il massimo.

Certo, si può intervenire installando dei componenti server-side che consentono di produrre delle bellissime stampe, Crystal Report o Business Object producono dei risultati ottimi in quanto a questo, ma.... costano cari ed inoltre occorre installarli sul server e distribuire gli applicativi client. E sappiamo già cosa ci risponderà il gestore del sito alla domanda "possiamo installare??". "No!"

Dopo una serie di (dis)avventure con i succitati prodotti, mi sono deciso finalmente a produrre qualche cosa che possa risolvere il problema. Quello che volevo era un prodotto/meccanismo che:

  • consentisse il controllo del formato di stampa (Portrait/Landscape)
  • permettesse di specificare font, dimensioni del carattere, grassetto, etc?
  • gestisse i salti pagina in modo "umano", permettendo (eventualmente) di forzarli
  • gestisse le tabelle o (al minimo) gestisse le tabulazioni
  • permettesse di specificare header e footer di pagina e la numerazione delle pagina
  • non dipendesse da elementi esterni da installare sul server (scripting puro insomma)
  • fosse (ragionevolmente) indipendentemente dal client dell'utente

Produrre un documento Word

La prima cosa che mi è venuta in mente quanto ho messo le mani sul problema è stata la produzione di un documento Word sul server da "rigirare" poi sul client.

Word è un OLE Server, questo vuole dire che posso "generare" un documento Word esattamente come "attivo" una connessione ad un database, usando

CreateObject()
, quindi usare i metodi dell'oggetto Word per "pilotare" il documento stesso. Per maggiori informazioni, potete consultare questo articolo .

Questa soluzione comporta però alcuni problemi. Innanzitutto Word deve essere installato sul server, cosa che non sempre è possibile, secondariamente i "metodi" di Word non sono la cosa più semplice del mondo da usare.

Questi due problemi, uniti al fatto che dopo mezz'ora di prove avevo 18 (!) sessioni di Word "zombie" sul server mi hanno fatto rapidamente scartare Word come soluzione valida.

Creare un documento RTF

L'esperienza Word però mi ha fatto pensare un momento: cosa posso produrre che sia "visto" come un documento con tali caratteristiche ma senza essere un documento Word? Risposta: un documento RTF.

L'RTF è un formato di documento "portabile" inventato da Microsoft all'inizio degli anni '90 per definire i testi che poi vengono trasformati nel sistema di help di Windows (.hlp).

Un file RTF è un file ASCII, cioè scritto in modo da essere (più o meno) leggibile direttamente, ma contiene dei tag, cioè degli indicatori che permottono di specificare come impostare il carattere, il paragrafo, la pagina etc. etc.

Diciamo che è un livello più "sofisticato" di HTML, dove oltre a specificare la formattazione del carattere e del paragrafo, possiamo specificare anche quella della pagina, quindi forzare una dimensione/orientamento per la stessa, forzare i salti pagina etc.

La cosa che è interessante è che è un testo ASCII, cioè può essere scritto direttamente senza l'ausilio di nessun programma specifico, esattamente come un buon WebMaster può scrivere un documento HTML senza dover usare nessun editor particolare.

Per produrre il documento RTF posso utilizzare il FileSystemObject, quindi mi basta redirigere l'utente sul documento RTF prodotto perchè questo venga visualizzato nel browser utilizzando il visualizzatore predefinito, se l'utente ha installato Word verrà aperto Word, altrimenti il browser sceglierà quello che è disponibile al momento (anche il mefitico WordPad è in grado di interpretare l'RTF).

7 pagine in totale: 1 2 3 4 5 6 7
Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti