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

C# Discussion :

Impression multi pages


Sujet :

C#

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Impression multi pages
    Bonjour

    Pour les print, Je me debrouille mais je ne suis pas encore grand spécialiste de l'impression particulierement la gestion du printdocument
    Ce qui me préoccupe aujourd'hui c'est comment de la meilleure maniere generer un saut de page et changer le format de la deuxieme page en Paysage

    Pour le moment j'ai une methode PrintInfo qui cree un PrintDocument, assigne le delegate de PrintPage a ma methode printDoc_PrintPage (voir ci dessous)

    Jusque la tout va bien, j'imprimme la jolie page que je souhaite

    Mais Je voudrais decouper ce que j'imprimme en deux page ! Une premiere partie en portrait (comme je fais déja) et puis generer un saut de page et imprimer la deuxieme partie en paysage !!

    Comment puis-je faire cela le mieux possible ?

    Merci de votre aide !


    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
        // **************************************************************************************
        public void PrintInfo()
        {
          this.doPrint = false;
     
          PrintDocument printDoc = new PrintDocument();
          printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage);
     
          PrintDialog dlgSettings = new PrintDialog();
          dlgSettings.Document = printDoc;
     
          if (dlgSettings.ShowDialog() == DialogResult.OK)
          {
            ppv(printDoc);
          }
        }
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  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
    Points : 6 334
    Points
    6 334
    Par défaut
    Dans le printpage, il suffit de mettre le HasMorePage à true lors de la génération de la première page et d'écrire le reste de la page dans le prochain déclenchement de PrintPage.
    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 émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci SaumonAgile

    Oui c'est ce que j'ai fait : J'ai integre les appel d'impression de mes differentes pages dans le printpage et j'utilise une propriete publique pour determiner ou j'en suis.

    Il reste cependant un dernier problème que je ne suis pas parvenu a résoudre c'est comment switcher de Portrait en LandScape ente deux pages ?

    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    e.PageSettings.Landscape=true
    mais ca ne change strictement rien
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  4. #4
    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
    Points : 6 334
    Points
    6 334
    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

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci saumon Agile j'ai aussi essayé le defaultsetting mais ca ne change rien !

    J'ai le sentiment que ce flag n'est qu'informatif et que c'est la fonction de draw que j'ai écrit qui doit en tenir compte pour retourner la page :

    Convertir les width en Height et vice-versa
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  6. #6
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut LandScape : LA SOLUTION
    Bonjour SaumonAgile

    J'ai enfin trouvé la solution je la donne ici car ca peut eviter des migraines a beaucoup !

    Le trigger du LandScape doit se faire dans l'event méconnu QueryPageSetting

    Voici ce que ca donne : remarque l'ajout de PageSet

    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
        // **************************************************************************************
        public void PrintPages()
        {
          this.doPrint = false;
     
          PrintDocument printDoc = new PrintDocument();
          printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage);
          printDoc.QueryPageSettings += new QueryPageSettingsEventHandler(PageSet);
     
          PrintDialog dlgSettings = new PrintDialog();
          dlgSettings.Document = printDoc;
     
          if (dlgSettings.ShowDialog() == DialogResult.OK)
          {
            ppv(printDoc);
          }
        }
        // **************************************************************************************
        void PageSet(object sender, QueryPageSettingsEventArgs e)
        {
          if (nbPage > 0)
          {
            e.PageSettings.Landscape = true;
          }
          else
          {
            e.PageSettings.Landscape = false;
          }
        }
        // **************************************************************************************
        void printDoc_PrintPage(object sender, PrintPageEventArgs e)
        {
     
          if (nbPage == 0)
          {
            printInfo(e);
            e.HasMorePages = true;
            nbPage = 1;
          }
          else
          {
            printGrid(e);
            e.HasMorePages = false;
            nbPage = 0;
          }
          printFooter(e);
        }
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

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

Discussions similaires

  1. [AC-2003] Impression état et fichier lié (multi pages)
    Par caro2552 dans le forum IHM
    Réponses: 0
    Dernier message: 27/10/2011, 14h06
  2. [CR 9] Impression multi documents : comment forcer la première page en page impaire ?
    Par fredfred dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 07/06/2011, 14h07
  3. [FLASH 8] Pb Impression multi pages
    Par cega68 dans le forum Flash
    Réponses: 1
    Dernier message: 29/09/2006, 21h29
  4. Impression multi pages
    Par nicolou dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/04/2006, 17h28
  5. [Debutant]Multi page sous sql serveur
    Par christophebmx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/11/2004, 17h23

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