Problême d'impression en vb.net double page
mahikan
Messages postés
3
Statut
Membre
-
chami -
chami -
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
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:
- Problême d'impression en vb.net double page
- Spouleur d'impression - Guide
- Double ecran - Guide
- Whatsapp double sim - Guide
- Supprimer page word - Guide
- Impression livret a5 - Guide
2 réponses
Je fais un petit UP car j'aimerais bien connaître la réponse aussi
Merci d'avance au pro de VB.net :)
Merci d'avance au pro de VB.net :)
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
« 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