PDA

View Full Version : [VB.NET] Problema rotazione testo nella stampa


jackk87
02-12-2009, 19:55
Buonasera,
nel mio programma ho la mia impostazione di pagina creata da me grazie a MarcoGG dove ho l'oriendamento orizzontale e verticale che va a modificare la proprietà landscape del PrintDocument e questo funziona perfettamente la pagina viene ruotata ora vorrei sapere se c'è qualche proprietà che permette di effettuare la rotazione del contenuto e non del foglio oppure devo cambiare io manualmente le cordinate di drawstring ecc...ecc...?
grazie in anticipo a tutti :help:

MarcoGG
03-12-2009, 10:03
Non capisco il problema. :stordita:
Se l'impostazione del foglio ( landscape / portrait ) la decidi PRIMA di scriverci sopra perchè hai bisogno anche di ruotare gli elementi grafici prima di stampare ?

jackk87
03-12-2009, 19:53
Ciao Marco il mio problema è che nel mio programma devo stampare delle Buste o dei Conti Correnti quindi è un formato personalizzato e se per esempio voglio stampare su una normale busta (220x208) mittente e destinatario in una normale stampante A4 devo metterla in verticale e non in orizzontale quindi quando faccio l'orientamento orizzontale nell'anteprima di stampa noto che si sposta solo la pagina e non il testo ti allego due file uno è la pagina in verticale e una in orizzontale :cool:

jackk87
03-12-2009, 20:01
l'altro

jackk87
04-12-2009, 11:55
Risolto basta invertire la larghezza e l'altezza del foglio quando si cambia l'orientamento :D

MarcoGG
04-12-2009, 12:59
Risolto basta invertire la larghezza e l'altezza del foglio quando si cambia l'orientamento :D

Ma infatti, però vorrei capire se esiste un problema di aggiornamento della preview usando PrintPreviewDialog o PrintPreviewControl.

Ad esempio, ho fatto una prova di stampa con un A4 Landscape che definisco via codice :

Dim pSize As New Printing.PaperSize
pSize.PaperName = "PROVA_A4_LANDSCAPE"
pSize.Height = CentesimiPollice(210)
pSize.Width = CentesimiPollice(297)
DOC.DefaultPageSettings.PaperSize = pSize

'Impostazioni Margini e Colore...
'...
'...

'Landscape / Portrait
DOC.DefaultPageSettings.Landscape = True

'Al PrintPreviewControl
PPC.Document = DOC
PPC.InvalidatePreview()

DOC è il nostro PrintDocument, mentre PPC è un controllo PrintPreviewControl sulla Form.
Nel DOC_PrintPage NON eseguo alcuna rotazione o traslazione su e.Graphics.

Ebbene, con Landscape = True il PrintPreviewControl sbaglia l'orientamento della pagina, che viene ancora mostrata in verticale, mentre poi, stampando realmente su carta con DOC.Print(), la stampante effettivamente stampa correttamente l'A4 in landscape... :mbe:

Forse parliamo dello stesso problema. E' una prova che puoi fare velocemente anche tu. Fammi sapere...

Altra cosa che ho notato, con una Pixma, ma non con altre stampanti, è che nella preview del PrintPreviewControl, i margini destro e inferiore sono maggiori di quanto dovrebbero essere, a anche qui, dando comunque DOC.Print(), su carta questo errore non si presenta : tutti i margini sono corretti... :rolleyes:

jackk87
04-12-2009, 13:30
Ciao Marco,
hai perfettamente ragione che è un problema di printpreviewcontrol o printpreviewdialog perchè io utilizzo la mia anteprima di stampa e quindi utilizzo solo printpreviewcontrol.
Io imposto tutto da codice anche lendscape e in effetti è come dici tu è un problema del controllo perchè nell'anteprima di stampa non lo fa ruotare ma quando si manda in stampa doc.print il risultato è quello che vogliamo e non quello che ci fa vedere il printpreviewcontrol.

Come sempre hai ragione :cool:

MarcoGG
04-12-2009, 13:53
Ciao Marco,
hai perfettamente ragione che è un problema di printpreviewcontrol o printpreviewdialog perchè io utilizzo la mia anteprima di stampa e quindi utilizzo solo printpreviewcontrol.
Io imposto tutto da codice anche lendscape e in effetti è come dici tu è un problema del controllo perchè nell'anteprima di stampa non lo fa ruotare ma quando si manda in stampa doc.print il risultato è quello che vogliamo e non quello che ci fa vedere il printpreviewcontrol.

Come sempre hai ragione :cool:

A meno che non esista qualche altra istruzione da inserire per forzare il PPC a ridisegnare il DOC... Finchè non si trova una soluzione definitiva ( comunque questo PrintPreviewControl di .NET mi ha sempre convinto poco :mad: ), ci facciamo il nostro PreviewControl da zero... :D .
Ma sì, tutto da zero. Alla fine, pensavo, bastano un Panel, una PictureBox, e tanto codice ! :D

jackk87
04-12-2009, 13:57
A meno che non esista qualche altra istruzione da inserire per forzare il PPC a ridisegnare il DOC... Finchè non si trova una soluzione definitiva ( comunque questo PrintPreviewControl di .NET mi ha sempre convinto poco :mad: ), ci facciamo il nostro PreviewControl da zero... :D .
Ma sì, tutto da zero. Alla fine, pensavo, bastano un Panel, una PictureBox, e tanto codice ! :D

in effetti è come dici tu le cose già fatte in .NET convincono poco se vuoi possiamo farlo insieme ci diamo una mano :D
cmq cerco anche di vedere se c'è una soluzione per ridisegnare il DOC :cool:

MarcoGG
04-12-2009, 14:04
in effetti è come dici tu le cose già fatte in .NET convincono poco se vuoi possiamo farlo insieme ci diamo una mano :D
cmq cerco anche di vedere se c'è una soluzione per ridisegnare il DOC :cool:

Esatto, vediamo prima di trovare una soluzione. Non sarebbe malaccio se qualche altro utente entrasse a dare un suggerimento. ( ma non ci spero ) :D
Più avanti, anche perchè ora sinceramente non ho nè il tempo, nè questa gran necessità, perchè no ? Si potrebbe fare... :)

jackk87
04-12-2009, 14:07
In effetti anche io ho il dubbio che qualche altro utente entri in vb.net rispondiamo solo io e te :D
cmq ok cerchiamo di trovare una soluzione e poi quando hai un pò di tempo e la necessità io sono qui a darti volentieri una mano :D