Impostare dimensioni foglio di stampa

mercoledì 13 ottobre 2004 - 12.32

Elena84 Profilo | Newbie

Ciao a tutti!
Ho un problema di questo tipo: in un programma ho la necessità di stampare su A5 e su A4 quindi vorrei impostare la dimensione del foglio da codice (senza dover far passare l'utente dalle impostazioni della stampante).
Ho provato in tutti i modi, anche impostando le dimensioni height e width ma da sempre errore.
Qualcuno può aiutarmi?
Grazie!

Elena

Coach Profilo | Guru

Che errore ti dà? è tanto che non lavoro con la stampa ma mi ricordo che non c'erano grossi problemi

Elena84 Profilo | Newbie

Premettendo che è la prima volta che uso la stampa in VB.NET, ho cercato in internet degli esempi per poter impostare la dimensione del foglio sul quale stampare e ho trovato questo:

m_Doc.PrinterSettings.DefaultPageSettings.PaperSize = m_Doc.PrinterSettings.PaperSizes.Item(2) 'A4

dove m_Doc è dichiarato come segue:

Private WithEvents m_Doc As New PrintDocument

Ma quando mando la stampa (m_Doc.print) il foglio ha dimensione A5 (formato che ho impostato come predefinito sulla stampante).

Un altro esempio che ho trovato era quello di impostare l'altezza e la larghezza del foglio così:
m_Doc.DefaultPageSettings.PaperSize.Height = 210
m_Doc.DefaultPageSettings.PaperSize.Width = 297

ma mi da l'errore che non posso modificare questi valori a meno che Kind non sia impostato a Custom: ma come si fa?
Minimo mi sto perdendo in un bicchiere d'acqua...
Grazie 1000 in anticipo!

Elena

Coach Profilo | Guru

Come prima cosa leggi il mio articolo che ti spiega per filo e per segno la stampa
http://www.dotnethell.it/articles/PrintWindowsForms.aspx

Non devi istanziare un nuovo oggetto prindocument ma devi lavorare nell'evento print page, inoltre prova a vedere l'oggetto printpagedialog dovrebbe aiutarti.

Hai 20 anni?
a beata giovinezza :-)

Ciao

Elena84 Profilo | Newbie

Grazie per la pronta risposta! :)
L'ho letto il tuo articolo e...quello l'ho già fatto. Infatti m_Doc lo dichiaro ma poi lavoro su m_doc_PrintPage dove ho già inserito tutto per organizzare la stampa.
Il mio problema è che devo "semplicemente" dirgli di stampare su A4 o su A5 a seconda della situazione in cui mi trovo. E' possibile?
Grazie ancora per l'aiuto!

Elena

PS: se ho 20 anni? Si!!! E' un bel numero... :)

Coach Profilo | Guru

Credo che l'unico modo sia intercettare i driver della stampa....

Elena84 Profilo | Newbie

Scusa ma...cioè?
E perchè mi dava errore quando imposto l'altezza e la larghezza dicendomi che è in sola lettura quando negli esempi che ho trovato facevano così?
Grazie ancora!

Elena

Coach Profilo | Guru

Scusa ma vi stò arruginendo con le applicazioni windowsclient

allora sempre nell'evento Print_Page puoi impostare widht ed heigth e solo li perchè quando richiami tale evento è il framework che si carica i driver della stampante di default che è installata sulla tua macchina

e quindi devi fare per esempio
e.PageSettings.PaperSize.Height = 800
e.PageSettings.PaperSize.width = 660

Elena84 Profilo | Newbie

Ho provato a inserire quel codice nell'evento printpage ma mi da lo stesso errore: è impossibile modificare height e width a meno che Kind non sia impostato a Custom.

Cosa vuol dire?

Elena84 Profilo | Newbie

Volevo dirti che ce l'ho fatta finalmente a impostare le dimensioni del foglio di stampa.
Ora perà ho un altro problema... :(
Quando mando la stampa, devo poter scegliere le pagine da stampare indicandone una d'inizio e una di fine. Sono riuscita a fare in modo che venga stampato solo il contenuto delle pagine indicate, ma al posto delle altre stampa fogli bianchi.
Mi spiego meglio: devo stampare il contenuto di un datagrid e tale stampa occupa 20 pagine. Io però ho bisogno di stamparne solo alcune, ad esempio dalla 5 alla 9: stampa dalla 1 alla 4 fogli bianchi, dalla 5 alla 9 il contenuto del datagrid correttamente, dalla 10 alla 20 fogli bianchi.
Si può evitare?
Grazie ancora dei suggerimenti!

Elena
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2013
Running on Windows Server 2008 R2 Enterprise, SQL Server 2008 & ASP.NET 3.5