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 :

Aprecu avant impression et impression réelle sont different


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Comptable
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 7
    Points
    7
    Par défaut Aprecu avant impression et impression réelle sont different
    Bonjour,

    Je crée une appli qui a pour but de sortir un document papier ou pdf.

    je veux apercevoir mon document avant de l'imprimer.

    quand je suis dans l’aperçu, mon document s'affiche toujours bien.
    quand je clique sur l'imprimante (dans l'aperçu en haut a gauche) mon document s'imprime (pdf creator) bien mais seulement si je n'ai qu'une seule page
    Dés que j'ai 2 ou plusieurs pages l'aperçu reste bon, mais à l'impression j'ai une page blanche.

    j'ai tester d’après le code du tuto de Philippe Lasserre et ça ne marche pas non plus avec deux pages.

    voici le code simplifié

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Option Explicit On
     
    Imports System.IO
    Imports System.Drawing
    Imports System.Drawing.Printing
     
     
     
    Public Class Form1
        Inherits Form
     
        Private WithEvents pd As New PrintDocument 'Assumes the default printer 
        Dim page As Integer = 1
     
     
        Private Sub Mission_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
     
            AddHandler pd.PrintPage, AddressOf Me.Pd_PrintPage
     
        End Sub
     
     
        Private Sub Pd_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pd.PrintPage
     
            If page = 1 Then
     
                e.Graphics.DrawString("Hello", New Font("Arial", 80, FontStyle.Bold), Brushes.Black, 150, 125)
     
                e.HasMorePages = True
     
            End If
     
            If page = 2 Then
     
                ' Pour tester==========
                Dim monim As Image
                monim = Image.FromFile("c:/1.jpg")
                e.Graphics.DrawImage(monim, 60, 30)
                ' Fin test ============
     
                e.HasMorePages = False
            End If
            page += 1
     
        End Sub
     
        Private Sub ButtonPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonPrint.Click
     
            Dim dlg As New PrintDialog
            dlg.Document = pd
     
            Dim result As DialogResult = dlg.ShowDialog()
     
            If (result = System.Windows.Forms.DialogResult.OK) Then
     
                Dim dllg As New PrintPreviewDialog
     
                dllg.Document = pd
     
                dllg.ShowDialog()
     
            End If
     
        End Sub
     
    End Class
    Y'a un truc qui est passé a travers mais je sais pas quoi.

    quelqu'un a-t-il une piste??

    Merci

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonsoir,

    Lors de l'impression de ta dernière page, il faut remettre la variable page à 1.
    Car quand tu cliques sur l'imprimante le code est rappelé, malheureusement le compteur de page est égal à 3, donc il ne rentre plus dans un des bloc if et imprime une page vide.

    Voici un petit changement utile (voir ligne 24) :
    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 Pd_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles pd.PrintPage
     
            If page = 1 Then
     
                e.Graphics.DrawString("Hello", New Font("Arial", 80, FontStyle.Bold), Brushes.Black, 150, 125)
     
                e.HasMorePages = True
     
            End If
     
            If page = 2 Then
     
                ' Pour tester==========
                Dim monim As Image
                monim = Image.FromFile("c:/1.jpg")
                e.Graphics.DrawImage(monim, 60, 30)
                ' Fin test ============
     
                e.HasMorePages = False
            End If
            page += 1
     
            If e.HasMorePages = False Then page = 1
     
        End Sub
    EDIT : Vous pourriez aussi initialiser les variables dans l’évènement BeginPrint

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Comptable
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    Ouaii! C'était ça!! Merci merci...
    Citation Envoyé par Sankasssss Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
            If e.HasMorePages = False Then page = 1

    ça faisait trois jours que je tournais le code dans tous les sens.
    Encore merci!

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Points : 85
    Points
    85
    Par défaut
    ah ah ah il y a 6 mois, j'ai passé limite 4h avant de trouver la supercherie je ne pense plus jamais faire l'erreur de ma vie ^^

    Bonne suite à toi
    N'oubliez pas de lire la FAQ avant de poser une question qui posséde déjà sa réponse !

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

Discussions similaires

  1. Aperçu avant impression et impression
    Par roman33 dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/04/2010, 08h50
  2. [WPF - C#]Aperçu avant Impression et Impression du contenu d'un composant
    Par Nanos dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 19/02/2010, 16h17
  3. [Impression] [JTable] impression de plusieurs instances
    Par mitnick2006 dans le forum Composants
    Réponses: 2
    Dernier message: 26/08/2008, 15h20
  4. [Javascript] Liens vers aperçu avant impression et impression
    Par Sayrus dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/05/2007, 11h27
  5. Problème entre "apercu avant impression" et "impression"
    Par mariemor64 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/07/2006, 11h57

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