2010-07-09 5 views
2

J'ai besoin d'aide pour imprimer plusieurs pages avec un modèle d'impression personnalisé. Le modèle d'impression (un contrôle utilisateur Silverlight) se compose de deux blocs de texte (titre et contenu qui affiche et imprime ultérieurement le texte correspondant). Le problème que je suis est sa seule capable d'imprimer une page, comment puis-je l'étendre pour imprimer plusieurs pages. Ceci est le flux de travail -Impression de plusieurs pages dans Silverlight 4 en utilisant un modèle d'impression personnalisé (un contrôle utilisateur)

  • Le contenu (à imprimer qui peut être très grand) est d'abord affichée sur le bloc de texte intégré dans la fenêtre enfant (type de boîte de message personnalisé).
  • Ce contenu doit être imprimé, j'ai donc créé un modèle d'impression personnalisé qui imprimera le titre et le contenu séparément.
  • Maintenant, je ne suis pas sûr comment je peux l'étendre pour imprimer plusieurs pages.

Voici mon XAML -

<StackPanel VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="10,10,10,10" > 
     <Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" CornerRadius="10" BorderThickness="5" Background="White" Height="50" > 
      <TextBlock HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="2" TextWrapping="Wrap" Name="TitleTextBlock" FontSize="16" 
         TextAlignment="Center" FontFamily="Times New Roman" FontStyle="Italic" FontWeight="SemiBold" > 
      </TextBlock> 
     </Border> 
     <Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" CornerRadius="10" Margin="0,10,0,0" BorderThickness="5" Background="White" Height="950" > 
      <TextBlock HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="10" TextWrapping="Wrap" Name="ContentTextBlock" FontSize="14" 
         FontFamily="Times New Roman" FontWeight="Normal" > 
      </TextBlock> 
     </Border> 
</StackPanel> 

et mon code -

Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) 
    printDoc.Print("MyTest") 
End Sub 

Private Sub printDoc_PrintPage(ByVal sender As Object, ByVal e As PrintPageEventArgs) 

    Dim printPage As New PrintingPageTemplate 

    'printPage.PageTitle = Me.Title.ToString 
    'printPage.PageContent = Me.txtMessage.Text 
    printPage.TitleTextBlock.Text = Me.Title.ToString 
    printPage.ContentTextBlock.Text = Me.txtMessage.Text 'The txtMessage is a text block which consists of data to be printed and it can have very large content 

    e.PageVisual = printPage 
    'e.HasMorePages = True ' This doesn't work 
End Sub 

Besoin d'une logique qui va vérifier la taille totale de TitleTextBlock et de créer nouvelle instance de PrintingTemplate. Quelqu'un peut-il s'il vous plaît jeter quelques indications sur la façon dont je peux y parvenir? (J'espère que je pourrais fournir assez d'informations pour mon problème).

Répondre

0

Le mieux que je peux gérer est de faire juste cela - jeter quelques pointeurs! J'ai trouvé cet article l'autre jour et je pensais qu'il serait probablement utile après avoir découvert que l'impression dans Silverlight est loin d'être aussi simple que je l'avais imaginé.

http://www.gal-systems.com/2/post/2011/02/multiple-pages-printing-in-silverlight-4.html

et la deuxième partie, pour générer un aperçu avant impression:

http://www.gal-systems.com/2/post/2011/02/multiple-page-printing-in-silverlight4-part-2-preview-before-printing.html

Faites-nous savoir comment vous allez!

Questions connexes