IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Gros souci de marging pour un form d'impression [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut Gros souci de marging pour un form d'impression
    Bonjour,
    J'ai un souci de marging dans mon appli avec laquelle je genere, en fin de calcul, un formulaire d'impression contenant divers paramètres

    Pour information voici l'image d'un print type :



    vous voyez le souci ..... je voudrais pouvoir imprimer sur la totalité de la page A4 avec un marging normal mais impossible de trouver le réglage adequat.
    Du coup, les caracteres sont petits et je ne peux pas entrer tous les parametres désirés.

    Je peux toujours changer la dimension du fom, cela ne change rien et ne m'imprime pas ce qui a ete agrandi.

    J'ai beau chercher dans le designer, dans le printform lui même, je ne vois aucune possibilité de changer cela.

    Voici le code de mon bouton print
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Private Sub Imprimer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Imprimer.Click
            Imprimer.Visible = False
            Image.Visible = False
            Quitter.Visible = False
            Avant.Visible = False
            Arriere.Visible = False
            If printerlist() = String.Empty Then
                If langue = "en" Then
                    messageaff = "No printer available on this station"
                    infoaff = "Error"
                Else
                    messageaff = "Aucune imprimante disponible sur ce poste"
                    infoaff = "Erreur"
                End If
                MessageBox.Show(messageaff, infoaff, MessageBoxButtons.OK, MessageBoxIcon.Error)
            Else
                Using p As New ClassImpression()
                    Try
                        p.SetDocument(Me)
                        p.Imprimeforme()
     
                    Catch ex As Exception
                        If langue = "en" Then
                            messageaff = "Printer Error : end of the impression"
                            infoaff = "Error"
                        Else
                            messageaff = "Erreur imprimante : fin de l'impression"
                            infoaff = "Erreur"
                        End If
                        MessageBox.Show(messageaff, infoaff, MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End Try
                End Using
            End If
            If flagnavigate = True Then
                Afficheboutons()
            End If
            Imprimer.Visible = True
            Image.Visible = True
            Quitter.Visible = True
        End Sub
    Auriez vous une idée ??

    Merci bien

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Comment fais-tu pour imprimer ?
    Peut-on voir le code ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    grillé de une minute

    aurais je omi de repondre a une question ou manque t"il des éléments ?

    Merci

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Bonjour,

    je n'avais pas vu le code ...
    Peut-on voir comment se présente la classe "ClassImpression" ?

    Merci

  5. #5
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    bonjour asmduty
    voici la classimpression()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Imports System.Drawing.Printing
    Imports System.Runtime.InteropServices
     
    Public Class ClassImpression
     
        Inherits PrintDocument
     
        Public Sub SetDocument(ByVal feuille As Control)
     
            Const SRCCOPY As Integer = &HCC0020 ' pour copier la source
            Dim controlGraphics As Graphics = feuille.CreateGraphics   ' graphique de la feuille à imprimer
            Dim controlSize As Size = feuille.ClientSize ' taille de la forme à copier
            Buffer = New Bitmap(controlSize.Width + 204, controlSize.Height + 312) ' buffer contenant la feuille à copier 
            Dim bufferGraphics As Graphics = Graphics.FromImage(Buffer)
     
            Dim bufferHdc As IntPtr = bufferGraphics.GetHdc   'hdc de la form destinée à l'impression
            Dim controlHdc As IntPtr = controlGraphics.GetHdc
            '*** DESSINE LE FORMULAIRE DANS LA PICTURE EN LE CENTRANT
            NativeMethods.StretchBlt(bufferHdc, 102, 156, controlSize.Width, controlSize.Height, controlHdc, 0, 0, controlSize.Width, controlSize.Height, SRCCOPY)
            bufferGraphics.ReleaseHdc(bufferHdc)
            controlGraphics.ReleaseHdc(controlHdc)
     
        End Sub
     
        Public Sub Imprimeforme()
            Using printDialogue As New PrintDialog()
                printDialogue.Document = Me
                If printDialogue.ShowDialog = DialogResult.OK Then
                    printDialogue.PrinterSettings.DefaultPageSettings.PaperSize = printDialogue.PrinterSettings.PaperSizes.Item(6)    'dimensions pour A4
                    Me.Print()
                End If
            End Using
        End Sub
     
        Protected Overrides Sub OnPrintPage(ByVal e As System.Drawing.Printing.PrintPageEventArgs)
     
            e.Graphics.DrawImage(buffer, 0, 0) ' impression proprement dite
            e.HasMorePages = False ' document une seule page
     
        End Sub
     
    End Class
    merci

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Voilà un exemple de code que j'utilise dans la methode monPrintDocument.PrintPage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
      'On récupère l'image à imprimer
            Using MyGr As Graphics = e.Graphics
     
                'On calcule le ratio pour la largeur de l'image
                Dim LargImage As Decimal = memoryImage.Width / memoryImage.HorizontalResolution * 100
                Dim RapX As Decimal = e.MarginBounds.Width / LargImage
                'On calcule le ratio pour la hauteur de l'image
                Dim HautImage As Decimal = memoryImage.Height / memoryImage.VerticalResolution * 100
                Dim RapY As Decimal = e.MarginBounds.Height / HautImage
                'On garde le ratio le plus petit pour redimensionner l'image afin que l'image imprimée ne sois pas coupée
                RapX = IIf(RapX < RapY, RapX, RapY)
                Dim RectSortie As New Rectangle(0, 0, Decimal.Parse(LargImage * RapX), CInt(HautImage * RapX))
                'On définit l'emplacement d'impression de l'image sur la page
                RectSortie.X = e.MarginBounds.X + Decimal.Parse((e.MarginBounds.Width - RectSortie.Width) / 2)
                RectSortie.Y = e.MarginBounds.Y + Decimal.Parse((e.MarginBounds.Height - RectSortie.Height) / 2)
                'Et on dessine l'image finale qui sera imprimée
                MyGr.DrawImage(memoryImage, RectSortie)
     
            End Using
    C'est du code trouvé sur ce forum que j'avais adapté, tu dois aussi pouvoir l'adapter/le retrouver sur le forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Mail] Gros soucis pour envoyer une newsletter en HTML
    Par Marmotton76 dans le forum Langage
    Réponses: 4
    Dernier message: 02/09/2011, 18h16
  2. Soucis de chemin pour ouvrir Form et Requêtes
    Par vaucluseimmo dans le forum VBA Access
    Réponses: 8
    Dernier message: 26/04/2010, 22h58
  3. petite question pour gros soucis
    Par bakman dans le forum SharePoint
    Réponses: 0
    Dernier message: 19/10/2007, 15h30
  4. Gros souci pour relancer la macro
    Par bebertol dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/06/2007, 11h16
  5. Gros soucis pour gérer un seul déplacement!
    Par senseii dans le forum SDL
    Réponses: 2
    Dernier message: 13/01/2007, 11h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo