Problême d'impression en vb.net double page

Fermé
mahikan Messages postés 2 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 20 juin 2008 - 24 mai 2008 à 15:32
 chami - 27 févr. 2011 à 14:39
Bonjour,

Je suis nouveaux sur ce site et merci de m'avoir aider dans plusieurs projet que j'ai pus avoir des renseignement.

Mais la j'ai un problème J'ai fais un traitement de texte que j'ai séparé la fenêtre en deux avec un Richtext 1 et un Richtext2 , tous vas bien sauf pour imprimer le Richtext 1 tous vas bien mais pour le Richtext 2 rien s'imprime ,j'ai pourtant mis PrintPreviewDialog1 et PrintPreviewDialog2 aussi PrintDocument1 et PrintDocument2 et PrintDialog1 et PrintDialog2 avec 2 bouttons impression page 1 et impression page 2 car les 2 fenêtres sont cote a cote .

Voici le code que j'ai écrit pour la page 1---------------- PrintDocument1

Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

Dim intPrintAreaWidth As Integer
Dim intPrintAreaHeight As Integer
Dim font As New Font("Microsoft Sans Serif", 10)
Dim myPen As New Pen(Color.Blue, 2)
Dim nWidth As Integer = PrintDocument1.PrinterSettings.DefaultPageSettings.PaperSize.Width
Dim nHeight As Integer = PrintDocument1.PrinterSettings.DefaultPageSettings.PaperSize.Height
With PrintDocument1.DefaultPageSettings
intPrintAreaWidth = .PaperSize.Width - .Margins.Left - .Margins.Right
intPrintAreaHeight = .PaperSize.Height - .Margins.Top
End With
m_nFirstCharOnPage = Me.FormatRange(False, _
e, _
m_nFirstCharOnPage, _
RichTextBox1.Text.Length)


e.Graphics.DrawString("page: " & CStr(ipage), font, Brushes.Blue, intPrintAreaWidth + 90, intPrintAreaHeight + 50)
If (m_nFirstCharOnPage < RichTextBox1.Text.Length) Then
ipage = ipage + 1
e.HasMorePages = True
Else
e.HasMorePages = False
End If
End Sub

---------------------------------------------------------------------------------------------------------------

Et maintenant pour la page 2 ---------PRINTDOCUMENT 2

Private Sub PrintDocument2_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument2.PrintPage
Dim intPrintAreaWidth As Integer
Dim intPrintAreaHeight As Integer
Dim font As New Font("Microsoft Sans Serif", 10)
Dim myPen As New Pen(Color.Blue, 2)
Dim nWidth As Integer = PrintDocument2.PrinterSettings.DefaultPageSettings.PaperSize.Width
Dim nHeight As Integer = PrintDocument2.PrinterSettings.DefaultPageSettings.PaperSize.Height
With PrintDocument1.DefaultPageSettings
intPrintAreaWidth = .PaperSize.Width - .Margins.Left - .Margins.Right
intPrintAreaHeight = .PaperSize.Height - .Margins.Top
End With
m_nFirstCharOnPage = Me.FormatRange(False, _
e, _
m_nFirstCharOnPage, _
RichTextBox2.Text.Length)


e.Graphics.DrawString("page: " & CStr(ipage), font, Brushes.Blue, intPrintAreaWidth + 90, intPrintAreaHeight + 50)
If (m_nFirstCharOnPage < RichTextBox2.Text.Length) Then
ipage = ipage + 1
e.HasMorePages = True
Else
e.HasMorePages = False
End If

-------------------------------------------------------------------------------------------

Pour le boutton 1

Private Sub MenuItem10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem10.Click

Try

PrintDialog1.Document = PrintDocument1
Dim result As DialogResult = PrintDialog1.ShowDialog()

If result = DialogResult.OK Then
PrintDocument1.Print()
End If

Catch ex As Exception

MessageBox.Show(ex.Message)
End Try
End Sub

---------------------------------------------------------------


Pour le boutton 2

Private Sub MenuItem29_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem29.Click
Try

PrintDialog2.Document = PrintDocument2
Dim result As DialogResult = PrintDialog1.ShowDialog()

If result = DialogResult.OK Then
PrintDocument2.Print()
End If

Catch ex As Exception

MessageBox.Show(ex.Message)
End Try
End Sub

J'ai essayer de trouver le pourquoi que sa imprime pas mais j'arrive pas .

Merci
A voir également:

2 réponses

Ricky38 Messages postés 4349 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 459
1 juin 2008 à 13:48
Je fais un petit UP car j'aimerais bien connaître la réponse aussi

Merci d'avance au pro de VB.net :)
0
Le problème est de pouvoir accéder au gestionnaire d'impression à un moment donné (par exemple au début ou à la fin d'une page). Pour accéder au début d'une page :

« Sub OnEndPage(ByVal document As PrintDocument, ByVal e As PrintPageEventArgs)

PrivateI = PrivateI + 1
If PrivateI <= 20 Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If


End Sub

»


`Dans cet exemple on n'imprime que les 20 1ères pages



Ensuite on fait appel à la procédure ci-dessus à partir du « PrintDocument1_PrintPage » :


« Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal ev As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage



....
....

ev.Graphics.DrawString(PrivateTexte, printFont, Brushes.Black, RectangleZoneImpression)

OnEndPage(PrintDocument1, ev)

End Sub

De même on peut créer une procédure « OnStartPage(PrintDocument1, ev) », etc. Aller voir ici :


https://docs.microsoft.com/fr-fr/dotnet/api/system.drawing.printing.standardprintcontroller?redirectedfrom=MSDN&view=netframework-4.8
0
Erratum: "pour accéder à la "fin" et non au "début" d'une page "
0