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 :

Aperçu (avant impression)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut Aperçu (avant impression)
    Bonjour les développeurs,
    ça y est, je désespère, j'ai passé la journée à essayer de créer un apperçu de documents en VB.Net.
    En gros, je ne trouve pas comment charger l'image dans le printDocument du printPreviewControl.

    Je vous passe mon code en espérant que l'un de vous trouvera ce qu'il manque.

    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
     Private Sub ListView1_MouseClick_1(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseClick
     
            Dim nomFichier As String = ""
            Dim selection As System.Windows.Forms.ListView.SelectedListViewItemCollection
            selection = ListView1.SelectedItems
     
            If selection.Count = 0 Then
                ' Ne rien faire.
            End If
     
            For Each element As Object In selection
                nomFichier = Mid(element.ToString, 16, element.ToString.Length - 20)  ' Ca c'est très moche mais ça récupère le nom du fichier uniquement.
            Next
     
            Me.SuspendLayout()
            Me.PrintDocument1.DocumentName = "Y:\mesScans\" & nomDossier & "\" & nomFichier & "*.pdf"
            Dir("Y:\mesScans\" & nomDossier)
            Me.PrintPreviewControl1.Name = nomFichier & ".pdf"
            Me.PrintPreviewControl1.Document = docToPrint
            Me.PrintPreviewControl1.Document.DocumentName = nomFichier & ".pdf"
            Me.Controls.Add(Me.PrintPreviewControl1)
            Me.PrintPreviewControl1.Document = Me.PrintDocument1
            Me.PrintDocument1.DocumentName = "Y:\mesScans\" & nomDossier & "\" & nomFichier & "*.pdf"
            Me.PrintPreviewControl1.Show()
     
        End Sub
    Merci à vous.

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Tu dois dessiner l'image avec e.Graphics.DrawImage(...) dans l'event handler associé à l'événement Print du PrintDocument.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut
    Désolée, je suis plutôt débutante dans ce langage, tu écrirais ça comment?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut
    Alors, j'ai tenté ça mais j'ai une magnifique erreur OutOfMemoryException:

    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
      Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
     
            Dim nomFichier As String = ""
            Dim docImage As Image
            nomFichier = Module1.nomFichier
     
            Me.SuspendLayout()
            Me.PrintDocument1.DocumentName = "Y:\mesScans\" & nomDossier & "\" & nomFichier & "*.pdf"
            Dir("Y:\mesScans\" & nomDossier)
            Me.PrintPreviewControl1.Name = nomFichier & ".pdf"
            Me.PrintPreviewControl1.Document = docToPrint
            Me.PrintPreviewControl1.Document.DocumentName = nomFichier & ".pdf"
            Me.Controls.Add(Me.PrintPreviewControl1)
            Me.PrintPreviewControl1.Document = Me.PrintDocument1
            Me.PrintDocument1.DocumentName = "Y:\mesScans\" & nomDossier & "\" & nomFichier & "*.pdf"
            If Dir$("Y:\mesScans\" & nomDossier & "\" & nomFichier & ".pdf", vbNormal) <> "" Then
                docImage = Image.FromFile("Y:\mesScans\" & nomDossier & "\" & nomFichier & ".pdf")
                e.Graphics.DrawImage(docImage, 0, 0)
                Me.PrintPreviewControl1.Show()
            Else
                MsgBox("Erreur! Fichier impossible à charger.", MsgBoxStyle.Critical)
                Me.Close()
            End If
     
        End Sub
     
    End Class
    Je vais chercher ce qui cloche.
    En attendant, si tu as une idée, je prends évidement!
    Merci en tout cas pour ton aide précieuse.

    Fanny

  5. #5
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Pour l'erreur fais un débogage pas à pas ou met des points d'arrêt pour voir où ça plante. Je pense que c'est méthode Image.FromFile qui plante (d'aileurs c'est la seule dans ton code qui peut renvoyer une exception de type OutOfMemoryException )car le format PDF ne correspond pas à une image.

    Espace un peu ton code il sera plus lisible comme ça

    A la place des concaténations tu peux utiliser la méthode String.Format pour améliorer la lisibilité du code.

    Ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Y:\mesScans\" & nomDossier & "\" & nomFichier & ".pdf"
    Peut se transformer en ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim path as String = String.Format("Y:\mesScans\{0}\nomDossier\{1}.pdf",  nomDossier,nomFichier)
    Tu réutilise ensuite ta chaine dans les méthode que tu appelle lorsque tu en as besoin

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Par défaut
    Merci pour l'astuce que je ne connaissais pas! Ca ressemble un peu au C.

    Tu m'as dit que cette méthode requiert une image et pas un fichier pdf mais comment faire alors si je veux créer un aperçu de ce type de fichiers?

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

Discussions similaires

  1. Concepteur RAVE sous DELPHI 7 : aperçu avant impression
    Par tarbala dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/06/2020, 00h37
  2. Aperçu avant impression d'un TRichEdit
    Par PoOky dans le forum Composants VCL
    Réponses: 2
    Dernier message: 31/01/2016, 23h19
  3. Réponses: 6
    Dernier message: 04/10/2005, 20h18
  4. Aperçu avant impression
    Par Zebulon777 dans le forum Access
    Réponses: 18
    Dernier message: 15/09/2005, 10h46
  5. [Débutante] Aperçu avant impression d'un composant
    Par gwendo dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 09/07/2004, 09h52

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