none
Impression RRS feed

  • Question

  • Bonjour,

    Je veux imprimer quelques détails d’un client

    J’ai une erreur que je n’arrive pas à résoudre

    Voilà mon code :

    Imports System.Drawing.Printing

    Imports System.Drawing.Imaging

    Imports System.Drawing

       Private Sub Btn_Gestion_Imprimer_Click(sender As System.Object, e As System.EventArgs) Handles Btn_Gestion_Imprimer.Click

          Dim Doc As New PrintDocument

          Dim PageSetup As New PrintDialog

          PageSetup.Document = Doc

          PageSetup.ShowDialog(Me)

       End Sub

       Private Sub PrintDocument1_PrintPage(sender As System.Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

          Dim Prt As String = "N° Client : " & Txt_NumClient.Text & vbCr

          Prt &= "Nom : " & Txt_Nom.Text & vbCr

          Prt &= "Prénom : " & Txt_Prenom.Text & vbCr

          Prt &= "Adresse : " & Txt_Adresse.Text & vbCr

          Prt &= "N° : " & Txt_Numero.Text & vbCr

          Prt &= "Code postal : " & Txt_CodePostal.Text & vbCr

          Prt &= "Localité : " & Txt_Localite.Text

          PrintDocument1.DocumentName = "N° Client : " & Txt_NumClient.Text

          Dim Police As New Font("Arial", 12)

          Dim Pnt As New System.Drawing.PointF(150, 50)   Emplacement pour imprimer le logo du client

    Imprimer : Utiliser un driver PDF pour créer un fichier PDF, a utilisé pour les emails

          Using Gr As Graphics = e.Graphics

             Gr.DrawString(Prt, Police, Brushes.Black, 0, 0, New StringFormat())

          End Using

          Using Gr As Graphics = e.Graphics

          '   'Dim P As New System.Drawing.PointF(150, 50)

          '   Gr.DrawImageUnscaled(Pic_Image, Pnt)   ' Taille de l'image : 335 x 335

    Erreur 1      La résolution de surcharge a échoué, car aucun 'DrawImageUnscaled' accessible ne peut être appelé avec ces arguments :

        'Public Sub DrawImageUnscaled(image As System.Drawing.Image, rect As System.Drawing.Rectangle)' : Impossible de convertir une valeur de type 'System.Windows.Forms.PictureBox' en 'System.Drawing.Image'.

        'Public Sub DrawImageUnscaled(image As System.Drawing.Image, rect As System.Drawing.Rectangle)' : Impossible de convertir une valeur de type 'System.Drawing.PointF' en 'System.Drawing.Rectangle'.

        'Public Sub DrawImageUnscaled(image As System.Drawing.Image, point As System.Drawing.Point)' : Impossible de convertir une valeur de type 'System.Windows.Forms.PictureBox' en 'System.Drawing.Image'.

        'Public Sub DrawImageUnscaled(image As System.Drawing.Image, point As System.Drawing.Point)' : Impossible de convertir une valeur de type 'System.Drawing.PointF' en 'System.Drawing.Point'.

          '   'Gr.DrawImage(Pic_Image, Pnt)

          End Using

       End Sub

    Un peu d’aide SVP

    Cordialement

    Salva

    jeudi 31 janvier 2013 09:54

Réponses

  • Voir l'exemple de la doc sur http://msdn.microsoft.com/fr-fr/library/system.windows.forms.printdialog.aspx

    Je vois :

    1) Le PrintDocument que vous indiquez est tirée d'une variable locale "Doc" et n'a aucun rapport avec le PrintDocument1 qui est celui que vous voulez paramétrer. Je ne vois pas où PrintDocument1 est déclaré mais ce serait donc plutôt :

    PageSetup.Document=PrintDocument1

    2) Et donc notez également que c'est à vous de lancer l'impression si l'utilisateur a confirmé l'impression depuis le dialogue de paramétrage


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    • Marqué comme réponse Aurel Bera lundi 4 février 2013 14:40
    jeudi 31 janvier 2013 12:21
    Modérateur
  • Bonjour,

    Voila comment j'ai resolu mon probleme.

      Private Sub Btn_Gestion_Imprimer_Click(sender As System.Object, e As System.EventArgs) Handles Btn_Gestion_Imprimer.Click

          Dim PageSetup As New PrintDialog

          PrintDocument1.DocumentName = "N° Client: " & Txt_NumClient.Text

          PageSetup.Document = PrintDocument1

          PageSetup.ShowDialog(Me)

          PrintDocument1.Print()

       End Sub

       Private Sub PrintDocument1_PrintPage(sender As System.Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

          Dim xx As Int16

          Dim Prt As String

          Prt = "                      Signalétique du Client: " & vbLf & vbLf

          Prt &= "N° Client. . . . . . . : " & Txt_NumTimbre.Text & vbLf

          If Txt_ Nom.Text.Length > 45 Then

             xx = Txt_ Nom.Text.IndexOf(" ", 40)

             Prt &= " Nom . . . . . . . . . : " & Txt_Nom..Text.Substring(0, xx) & vbLf

             Prt &= "                         " & Txt_Nom.Text.Substring(xx) & vbLf

          Else

             Prt &= " Nom . . . . . . . . . : " & Txt_Nom.Text & vbLf

          End If

          Prt &= " Prénom. . . . . . . . : " & Txt_Prenom.Text & vbLf

          Prt &= " Adresse . . . . . . . : " & Txt_Adresse.Text & vbLf

          Prt &= " N°. . . . . . . . . . : " & Txt_Numero.Text & vbLf

          Prt &= " Code postal. . .  . . : " & String.Format("{0:# ###}", Convert.ToInt32(Txt_CodePostal.Text)) & vbLf

          Prt &= " Localité . .  . . . . : " & Txt_Localite.Text & vbLf & vbLf

          Dim Police As New Font("Courier new", 12)

          Dim Coint As New Point(50, 450)   Emplacement pour imprimer le logo du client

         Imprimer : Utiliser un driver PDF pour créer un fichier PDF

          Using Gr As Graphics = e.Graphics

             Gr.DrawString(Prt, Police, Brushes.Black, 50, 50, New StringFormat())

             Gr.DrawImageUnscaled(Pic_Image.Image, Coint)   ' Taille de l'image : 335 x 335

          End Using

       End Sub

    Maintenant j'ai 2 autres questions.

    1- comment imprimer le titre au centre de la page en lui donnant une autre taille

    2- comment imprimer le détail dans une police type « arial », mais garder l'alignement des ":"

    Pour la question 1, j'ai tenté la tabulation, mais apparemment ce ne marche pas

    Bonne journée

    SAlva

    • Marqué comme réponse Aurel Bera lundi 4 février 2013 14:40
    lundi 4 février 2013 08:47
  • Bonjour,

    Merci pour l'URL.

    Je vais tenter de mettre en pratique

    Cordialement

    SAlva

    • Marqué comme réponse sa56 lundi 4 février 2013 14:38
    lundi 4 février 2013 14:38

Toutes les réponses

  • Bonjour,

    La partie "Impossible de convertir une valeur de type 'System.Windows.Forms.PictureBox' en 'System.Drawing.Image" indique que Pic_Image est un contrôle PictureBox alors que l'on attend une image (donc Pic_Image.Image pour récupérer l'image de ce contrôle).

    Et donc de même l'autre message indique que Pnt est un "PointF" alors que l'on attend un "Point" (ou un rectangle) donc modifier la déclaration.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 31 janvier 2013 10:21
    Modérateur
  • Bonjour,

    Merci pour votre reponse.

    J'ai une autre probleme.

    Comment faire appel a      PrintDocument1_PrintPage  

    quand je clique sur mon bouton imprimer, j'ai bien la boite de dialogue mais apres ... rien

    jeudi 31 janvier 2013 11:09
  • Voir l'exemple de la doc sur http://msdn.microsoft.com/fr-fr/library/system.windows.forms.printdialog.aspx

    Je vois :

    1) Le PrintDocument que vous indiquez est tirée d'une variable locale "Doc" et n'a aucun rapport avec le PrintDocument1 qui est celui que vous voulez paramétrer. Je ne vois pas où PrintDocument1 est déclaré mais ce serait donc plutôt :

    PageSetup.Document=PrintDocument1

    2) Et donc notez également que c'est à vous de lancer l'impression si l'utilisateur a confirmé l'impression depuis le dialogue de paramétrage


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    • Marqué comme réponse Aurel Bera lundi 4 février 2013 14:40
    jeudi 31 janvier 2013 12:21
    Modérateur
  • Bonjour,

    Est-ce que vous avez testé les solutions proposées ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    vendredi 1 février 2013 08:57
  • Bonjour,

    Voila comment j'ai resolu mon probleme.

      Private Sub Btn_Gestion_Imprimer_Click(sender As System.Object, e As System.EventArgs) Handles Btn_Gestion_Imprimer.Click

          Dim PageSetup As New PrintDialog

          PrintDocument1.DocumentName = "N° Client: " & Txt_NumClient.Text

          PageSetup.Document = PrintDocument1

          PageSetup.ShowDialog(Me)

          PrintDocument1.Print()

       End Sub

       Private Sub PrintDocument1_PrintPage(sender As System.Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

          Dim xx As Int16

          Dim Prt As String

          Prt = "                      Signalétique du Client: " & vbLf & vbLf

          Prt &= "N° Client. . . . . . . : " & Txt_NumTimbre.Text & vbLf

          If Txt_ Nom.Text.Length > 45 Then

             xx = Txt_ Nom.Text.IndexOf(" ", 40)

             Prt &= " Nom . . . . . . . . . : " & Txt_Nom..Text.Substring(0, xx) & vbLf

             Prt &= "                         " & Txt_Nom.Text.Substring(xx) & vbLf

          Else

             Prt &= " Nom . . . . . . . . . : " & Txt_Nom.Text & vbLf

          End If

          Prt &= " Prénom. . . . . . . . : " & Txt_Prenom.Text & vbLf

          Prt &= " Adresse . . . . . . . : " & Txt_Adresse.Text & vbLf

          Prt &= " N°. . . . . . . . . . : " & Txt_Numero.Text & vbLf

          Prt &= " Code postal. . .  . . : " & String.Format("{0:# ###}", Convert.ToInt32(Txt_CodePostal.Text)) & vbLf

          Prt &= " Localité . .  . . . . : " & Txt_Localite.Text & vbLf & vbLf

          Dim Police As New Font("Courier new", 12)

          Dim Coint As New Point(50, 450)   Emplacement pour imprimer le logo du client

         Imprimer : Utiliser un driver PDF pour créer un fichier PDF

          Using Gr As Graphics = e.Graphics

             Gr.DrawString(Prt, Police, Brushes.Black, 50, 50, New StringFormat())

             Gr.DrawImageUnscaled(Pic_Image.Image, Coint)   ' Taille de l'image : 335 x 335

          End Using

       End Sub

    Maintenant j'ai 2 autres questions.

    1- comment imprimer le titre au centre de la page en lui donnant une autre taille

    2- comment imprimer le détail dans une police type « arial », mais garder l'alignement des ":"

    Pour la question 1, j'ai tenté la tabulation, mais apparemment ce ne marche pas

    Bonne journée

    SAlva

    • Marqué comme réponse Aurel Bera lundi 4 février 2013 14:40
    lundi 4 février 2013 08:47
  • Bonjour,

    Merci pour l'URL.

    Je tenter de mettre en pratique.

    Cordialement

    SAlva

    lundi 4 février 2013 14:37
  • Bonjour,

    Merci pour l'URL.

    Je vais tenter de mettre en pratique

    Cordialement

    SAlva

    • Marqué comme réponse sa56 lundi 4 février 2013 14:38
    lundi 4 février 2013 14:38