PDA

View Full Version : [JSP-Java] Gestione della stampa: come aumentare il numero i caratteri per ogni riga?


PHØΞИIX
04-06-2011, 14:37
Ciao,

sto sviluppando un sistema informativo basato sul web che si appoggia ad un database MySQL. La generazione delle pagine avviene sul server tramite JSP. Per la stampa dei dati, ho pensato ad una gestione delle procedure di stampa a lato server. Ma, documentandomi all'interno del forum e su altri siti, non sono riuscito a trovare la soluzione al mio principale problema.
Alcune stampe necessitano di 135 caratteri monospace per ogni riga in un normale foglio A4. Facendo delle prove, ho notato che una stampa con settaggi di default consente 79 caratteri per riga, che riducendo i margini potrebbe arrivare al massimo a 85-90 caratteri per riga.
Volevo sapere se qualcuno sa come diminuire la larghezza dei caratteri, o in generale come risolvere questo mio problema, utilizzando Java. Considerate che la stampa viene lanciata direttamente dal programma senza finestre di dialogo o interazione con l'utente.

Grazie

PGI-Bis
04-06-2011, 19:30
La domanda è: cosa usi per stampare? Lo chiedo perché con le api di stampa "grafica" di Java (java.awt.print) la questione dei caratteri non dovrebbe essere un problema: riduci il font e via. Il che mi fa sospettare che tu stia usando api diverse.

PHØΞИIX
04-06-2011, 20:02
Non avendo mai avuto a che fare con la stampa su carta, mi stavo informando anche giusto per sapere quale api usare. Ho letto che oltre a java.awt.print c'è anche java.awt.Desktop. Altre non ne ho sentito parlare. Alla riduzione del font ci avevo pensato anch'io, solo che, dopo aver fatto delle prove, la dimensione dei caratteri era troppo piccola e quindi la stampa risulterebbe poco leggibile. Piuttosto stavo cercando un modo per "stringere" i caratteri della riga mantenendone l'altezza, cosi da farcene stare 135 anzichè gli 80-85 della stampa normale.
Conosci per caso un modo per fare ciò?
Siccome il mio sistema è una reimplementazione di un vecchio sistema scritto in COBOL, so che con tale linguaggio una cosa del genere è possibile, in quanto è attualmente la soluzione utilizzata.
E quale api mi consigli di usare?

PGI-Bis
04-06-2011, 20:36
Desktop ha il metodo "print" che manda in stampa un documento, più o meno come fare click col destro su un documento del filesystem e scegliere "stampa".

Per la riduzione, potresti fare un rapido tentativo scalando il contesto grafico su cui stampi. Per farla breve, il metodo print di un printable ti fornisce un java.awt.Graphics che da Java 1.2 in poi è un Graphics2D. Tu calcoli quale dovrebbe essere la dimensione dell'area stampabile per ospitare 135 caratteri prendi la larghezza del PageFormat (getImageableWidth e la dividi per la larghezza di prima.

Converti il Graphics a Graphics2D e usi il fattore per ridurre la scala sull'asse x:

graphics2d.scale(F, 1)

e poi disegni il testo.

PHØΞИIX
05-06-2011, 13:50
Ok grazie 1000!! :D
Lunedi provo e spero vada tutto per il verso giusto!! ;)