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

Silverlight Discussion :

Impression sur plusieurs pages


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 116
    Par défaut Impression sur plusieurs pages
    Bonjour,

    je débute en c# et silverlight. Je voudrais, grâce à silverlight, imprimer des informations contenu dans mon objet.

    J'utilise un template xaml assez simple (plusieurs zones accueillant chacune leurs élément).

    Le problème c'est que si les informations imprimées prennent plus d'une page, elles ne sont pas imprimés.

    Pour les informations basiques, cela correspond, mais j'utilise un champ commentaire, qui peut être très long, et donc dépassé la taille maximum.

    Voici le bloc concerné par le blocage :

    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
                            <TextBlock Text="Commentaire : " 
                                       Grid.Row="15" 
                                       FontSize="18" 
                                       Margin="0,35,0,0" />
                            <Border Background="Black" 
                                    Grid.Row="15" 
                                    Height="0.5"  
                                    VerticalAlignment="Bottom" 
                                    Grid.ColumnSpan="2" />
                            <TextBlock Name="Commentaire" 
                                       Grid.ColumnSpan="2"
                                       MaxWidth="815"
                                     TextWrapping="Wrap"
                                       Grid.Row="16" 
                                       Margin="10,10,0,0" />
    Et voici comment je remplis mon document :

    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
     
    void btPrint_Click(object sender, RoutedEventArgs e)
            {
    PrintDocument monDocument = new PrintDocument();
                monDocument.Print("Fiche_");
                btPrint.IsEnabled = true;      
                monDocument.PrintPage += (s, args) =>
     
                {
                    Voiture maVoiture = this.itmVoitureSelect;
     
                    PrintPageTemplate monTemplatePrint = PrintableArea.printTemplate(maVoiture);
                    monTemplatePrint.Width = args.PrintableArea.Width;
                    monTemplatePrint.Height = args.PrintableArea.Height;
                    args.PageVisual = monTemplatePrint;
                };
    }
    Et la méthode PrintTemplate(un peu long, j'ai donc enlever la plupart des propriétés, mais c'est du copier/coller : 1 ligne pour 1 propriété) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static PrintPageTemplate printTemplate(Voiture maVoiture)
            {
     
     
                PrintPageTemplate monTemplate = new PrintPageTemplate();
     
     
                monTemplate.Nom = maVoiture.Nom;
                monTemplate.Commentaire= maVoiture.Commentaire;
     
                return monTemplate;
            }
    Je suis ouvert à toutes idées (création d'un second template pour le "commentaire" etc...). Il est même possible que j'imprime la partie commentaire dans un document à part, et sans template (uniquement le contenu de commentaire).

    Comment faire pour tout imprimer? Faut il ajouter des propiétés dans le xam des manipulations dans la printableArea?

    Merci d'avance.
    Si ce n'est pas assez clair, ou qu'il manque des élément, n’hésitez pas à me le faire savoir.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 116
    Par défaut
    Petit up.

    Personne ne saurait comment je pourrais faire ça? Je n'ai vraiment rien trouvé sur le net qui puisse m'aider.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 116
    Par défaut
    Petit up, car je n'ai toujours pas trouvé comment imprimé cela.

    J'ai trouvé cecei :

    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
    void maLettreMotiv_PrintPage(object sender, PrintPageEventArgs e)
            {
                int indexValue = 0;
                StackPanel itemHost = new StackPanel();
                while (indexValue < 1) // Nombre de répétition dans le pdf
                {
                    //TextBlock title = new TextBlock();
                    //title.Text = "LettreMotivation " + itmCandidatSelect.NomCandidat + " " + itmCandidatSelect.PrenomCandidat;
                    //title.VerticalAlignment = VerticalAlignment.Center;
                    //title.FontSize = 16;
                    //itemHost.Children.Add(title);
                    TextBlock tb = new TextBlock();
                    tb.TextWrapping = TextWrapping.Wrap;
                    tb.Padding = new Thickness(10, 10, 10, 10);
                    tb.Text = tbLettreMotiv.Text;
                    itemHost.Children.Add(tb);
                    itemHost.Measure(new Size(e.PrintableArea.Width, double.PositiveInfinity)); // To update designed size of StackPanel
                    if (itemHost.DesiredSize.Height > e.PrintableArea.Height) // Check if Stack   Panel Height is more than printable area height
                    {
     
                        //itemHost.Children.Remove(tb);
                        e.HasMorePages = true; // Set HasMorePages to true. This will split(page break) the page.
                        break; // Come out of while loop.
                    }
                    indexValue++;
                }
                e.PageVisual = itemHost;
            }

    Mais à chaque fois que ça depasse une page, et que ça crée le e.hasMorePages, cela fait freezer l'ecran, et genère un pdf de 100 pages au moins...
    Merci

Discussions similaires

  1. Impression sur plusieurs pages
    Par p1k1 dans le forum Silverlight
    Réponses: 4
    Dernier message: 29/06/2011, 13h33
  2. [AC-2007] Impression sur plusieurs pages
    Par Chris 81 dans le forum VBA Access
    Réponses: 0
    Dernier message: 28/04/2009, 10h00
  3. Impression sur plusieurs page Objet ocument)
    Par totoprog dans le forum ASP.NET
    Réponses: 1
    Dernier message: 19/04/2009, 18h18
  4. [D7 et Quickreport 3] Impression sur plusieurs pages
    Par Moine dans le forum Débuter
    Réponses: 3
    Dernier message: 13/12/2007, 12h01
  5. Pb d'impression sur plusieurs pages d'un JGraph
    Par StephG31 dans le forum 2D
    Réponses: 1
    Dernier message: 15/06/2006, 10h23

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