Hallo,
bräuchte mal eure Hilfe bei der Verarbeitung von Mail bzw. Mail.Body mit einem Ausdruck...
Ich habve mir ein kleines Add-In gebastel, wo ich per Knopfdruck eine Email in ein Verzeichnis ablegen kann und diese Mail auch gleich anders Formatiert ausdrucken kann.
Nur hat dieser Code irgendwo einen Hacken und ich komme einfach nicht drauf, woran das liegen könnte...
Problem: Beim ersten Aufruf des Add-Ins (Mail markiert) funktioniert alles, rufe ich es ein weiteres mal auf z.B. um eine weitere Email zu drucken und abzulegen, wird der Mail-Body nicht mehr ausgedruckt... Ich denke dass dies etwas mit der Formatierung und Zeilenumbrüche zu tun hat... ich find aber den Fehler nicht...
Vielleicht könnt Ihr mir da auf die Sprünge helfen !???
Der Code:
Gru0
lris
bräuchte mal eure Hilfe bei der Verarbeitung von Mail bzw. Mail.Body mit einem Ausdruck...
Ich habve mir ein kleines Add-In gebastel, wo ich per Knopfdruck eine Email in ein Verzeichnis ablegen kann und diese Mail auch gleich anders Formatiert ausdrucken kann.
Nur hat dieser Code irgendwo einen Hacken und ich komme einfach nicht drauf, woran das liegen könnte...
Problem: Beim ersten Aufruf des Add-Ins (Mail markiert) funktioniert alles, rufe ich es ein weiteres mal auf z.B. um eine weitere Email zu drucken und abzulegen, wird der Mail-Body nicht mehr ausgedruckt... Ich denke dass dies etwas mit der Formatierung und Zeilenumbrüche zu tun hat... ich find aber den Fehler nicht...
Vielleicht könnt Ihr mir da auf die Sprünge helfen !???
Der Code:
VB.NET-Quellcode
- ' Mailinhalt (Text)
- g.DrawString("Mitteilungsinhalt:", F_Courier11b, Brushes.Black, RandLinks, AnfangsZeile)
- AnfangsZeile += Zeilenhoehe
- 'g.DrawString(mail.Body, F_Courier11n, Brushes.Black, RandLinks, AnfangsZeile)
- Dim SF As StringFormat = StringFormat.GenericDefault
- Dim Ft As Font = F_Courier11n
- Dim AllowedHeight As Integer = 0
- If Page = 1 Then
- AllowedHeight = e.MarginBounds.Height - 240
- Else
- AllowedHeight = e.MarginBounds.Height - 130
- End If
- Dim SB As New System.Text.StringBuilder(mail.Body.Substring(_CharsPrinted))
- Dim LinesFilled, CharsFitted As Integer ' werden von MeasureString() eingetragen (ByRef)
- Dim Sz As SizeF = g.MeasureString(SB.ToString, Ft, e.MarginBounds.Size, SF, CharsFitted, LinesFilled)
- ' Sinnigerweise zählt MeasureString() auch nur halb dargestellte Characters als "fitted".
- ' Da wir das beim Drucken anders sehen, Gegenprobe (Messung innerhalb einer quasi nach
- ' unten offenen Size):
- Sz.Height = Short.MaxValue
- ' Maße des druckbaren Bereichs
- Dim X As Double = e.MarginBounds.Left
- Dim Y As Double = e.MarginBounds.Top
- Dim B As Double = e.MarginBounds.Width
- Dim H As Double = e.MarginBounds.Height
- Dim drawRect As New RectangleF(RandLinks, AnfangsZeile, B, Sz.Height) 'AnfangsZeile + 20
- While g.MeasureString(SB.ToString(0, CharsFitted), Ft, Sz, SF).Height > AllowedHeight
- CharsFitted -= 1
- End While
- g.DrawString(SB.ToString(0, CharsFitted), Ft, Brushes.Black, drawRect, SF)
- _CharsPrinted += CharsFitted
Gru0
lris
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „lris08“ ()