57 messaggi dal 07 aprile 2005
Buongiorno,

Spero che mi possiate essere d'aiuto visto che mi sto spaccando la testa da diversi giorni ormai...

Ho la necessità di stampare senza margini...

Uso questo pezzo di codice:

System.Drawing.Printing.Margins margine =
printDialog1.Document.DefaultPageSettings.Margins;
margine.Bottom = 0;
margine.Left = 0;
margine.Right = 0;
margine.Top = 0;
printPreviewDialog1.Show();

Se faccio l'anteprima del documento, tutto funziona ma se lo mando in stampa torna quel cm di margine  .

Come posso fare?

Grazie
Roberto
501 messaggi dal 09 giugno 2006
Contributi
Ciao.

Prima di tutto dovresti verificare i limiti "fisici" della stampante. Alcune stampanti non consentono la stampa a margine zero oppure lo consentono solo su alcuni margini.

Ciao.

.:. Marcello Rutter .:.
57 messaggi dal 07 aprile 2005
Ciao,

Ho fatto alcune verifiche con altri programmi e la stampante stampa a margine 0.
Anzi ha una proprietà nelle preferenze per impostare la pagina in quel modo.

Roberto
501 messaggi dal 09 giugno 2006
Contributi
Ciao.

Si tratta appunto di una impostazione a livello di driver di stampa sulla quale non hai controllo.

Mi spiego un po' meglio. Quando visualizzi il documento nella finestra di dialogo di anteprima il sistema di rendering impiegato non tiene conto dei limiti della stampante.

Quando invece stampi verso la stampante, tali limiti vengono impostati dal driver e non hai la possibilità di modificarli. Puoi verificare questa situazione eseguendo il DEBUG della tua applicazione. Intercetta, a titolo di esempio, l'evento PrintDocument.QueryPageSettings inserendo il seguente codice:
    Private Sub PrintDocument1_QueryPageSettings(ByVal sender As Object, ByVal e As System.Drawing.Printing.QueryPageSettingsEventArgs) Handles     
        e.PageSettings.Margins = New System.Drawing.Printing.Margins(0, 0, 0, 0)
        Debug.WriteLine(e.PageSettings.PrintableArea.ToString())
    End Sub

Noterai che in anteprima il margine è 0,0 e la dimensione del foglio è totale mentre quando stampi verso la stampante i valori cambiano e il driver della stampante riduce l'area di stampa applicando i margini minimi ammessi.

Ho cercato un po' in giro ma al momento non ho trovato un modo per modificare le impostazioni da .NET (pensavo si potesse ricorrere alla struttura DEVMODE ma non ho trovato nulla in merito ai margini fisici).

Ciao.

.:. Marcello Rutter .:.
57 messaggi dal 07 aprile 2005
Ho provato e hai proprio ragione.

Grazie
Roberto

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.