Newsgroup: it.comp.lang.visual-basic
Titolo: Semplice sistema per fare il preview di ciò c he verrà stampato

Salve,
sto cerando un "semplice" sistema per fare il preview di ciò che verrà 
stampato.
Mi servirebbe un oggetto che si possa trattare come una Printer (perchè 
ho già tutto il codice fatto per gestire l'oggetto printer).
Ho guardato un po' in giro, e ho visto un po' di esempi che usavano 
l'occetto picture.
Tuttavia il problema che ho trovato è nel size dei font: impostando il 
medesimo font con le medesime caratteristiche (size, etc.) l'oggetto 
printer mi da un Textheigh diverso dal picture, per cui non mi torna mai 
il medesimo numero di righe quando faccio il preview sulla picture e la 
stampa effettiva.
Ultima nota, devo stampare essenzialemente dei report di testo (senza 
immagini, tabelle, etc).
Grazie anticipatamente a chiunque mi possa dare una mano.
Saluti

 picture e la stampa effettiva.
Dando per scontato che tutte le proprietà Scale-eccetera siano assegnate
alla Picture come quelle della Printer, è vero (ma solo per alcuni font e/o
dimensioni) e non ho mai trovato soluzione, nè informazioni.
Suppongo che dipenda dalla diversa definizione del video rispetto alla
stampante.


 A ma sei tornato !!! Bentornato allora!!
Ciao
--------------------------------
Inviato via 
http://usenet.libero.it

 Bentornato allora!!
Grazie.

 l'occetto picture.
Ho avuto lo stesso problema in questi giorni.
Credo che il tuo problema siano i margini della pagina da riportare nella
picture, per cui questa non è larga come Printer.Width, ma come
Printer.ScaleWidth (e lo stesso per l'height).
Poi ti consiglio di impostare entrambi gli scalemode a vbMillimeters.
Io mi sono fatto una classe wrapper che invia i comandi ad una picture o
alla stampante a seconda della scelta e gestisce comandi particolari come
NewPage, Cls e EndDoc.
Ad es. la NewPage sulla picture forza una SavePicture dell'immagine corrente
nella TEMP in modo da poter fare un'anteprima di tutte le pagine
semplicemente caricando quella voluta.
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net

 Poi ti consiglio di impostare entrambi gli scalemode a vbMillimeters.
Perchè? C'è maggiore fedeltà nell'anteprima?

 A qualcuno si è accesa una lampadina ? ;-)
Prova a mettere la tua picturebox a Printer.ScaleWidth, ScaleHeight e butta
via tutte le tue formule di rapporto.
Attento anche a non aver impostato una Scale sulla picture.


 
in ogni caso grazie per la chiaccerata.

 hanno sfondo trasparente).
http://makeashorterlink.com/?M62C527D5

solo con l'endDoc manda l'__immagine__ alla stampante.
Con l'EndDoc dice allo spooler di chiudere il file in modo da mandarlo
alla stampante.
Un po' di differenza l'avrai comunque perche', in realta', dovresti
fare l'immagine di cio' che (e come) verra' stampato (io non saprei
come fare) ma ti ci puoi avvicinare parecchio.
Anche la stessa MFC (che ti da l'anteprima di stampa con l'application
wizard ;-) produce una minima differenza tra l'anteprima e la carta,
ma proprio perche' i font del video e della stampante non e' detto
coincidano, il video misura in pixel mentre la stampante in punti per
pollice quindi c'e' la risoluzione della stampante e quella del video.
-- 
ciao, hal

 disponibili *sulla stampante*.
Sei sicuro?
Secondo me Printer crea un'immagine "rasta" :P che viene inviato alla
stampante (i font TT servono a questo, no?).
E anche un semplice Printer.Print, passando dallo "spooler", segue questa
logica.
Diverso dovrebbe essere per la scrittura diretta su LPT


stampante (i font TT servono a questo, no?).
Credo che una cosa del genere potrebbe funzionare solo con le laser,
ma non le altre non credo. D'altra parte se mandasse un'immagine
allora come spiegheresti le piccole differenze di rendering tra
l'anteprima e la stampa su carta?
Ho fatto un programma scemo con l'app wizard di mfc per stampare una
scacchiera. Seguendo passo passo, le uniche differenze che ho trovato
erano quelle relative alla verifica della stampante ed alla gestione
del file di spool, per il resto il codice che ho scritto nella mia
Square::OnDraw ha fatto il disegno cosi' come per l'anteprima e la
visualizzazione normale.
Con l' EndDoc ha chiuso lo spool ed e' uscita subito la stampa.
Per lo meno, se di immagine della pagina si tratta, e' un'immagine
costruita dalla stampante e non e' il computer che glie la manda.
-- 
ciao, hal

 ciao, hal
Credo anch'io che le cose stiano in questa maniera: la stampante (p.e. le
laser PCL hanno la capacità di costruirsi la pagina internamente a seguito
di invio non già dell'immagine della pagina stessa, ma con una serie di
comandi).
Analogamente, credo che quando si faccia un print sul device printer questo
è immediatamente mandato dal driver di stampa alla stampante (per le
stampanti un po' evolute che hanno la capacità di costruirsi internamente la
pagina).
La verifica di questa (credo) l'ho fatta semplicemente stampando sul Writer
di Acrobat.
Immediatamente dopo l'esecuzione della prima print, il driver chiede il nome
del file pdf da creare. I.e. win gli ha inviato già qualcosa.