Komisches Verhalten bei Mail.Body und Ausdruck- Bräuchte mal Hilfe...

  • VB.NET

    Komisches Verhalten bei Mail.Body und Ausdruck- Bräuchte mal Hilfe...

    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:

    VB.NET-Quellcode

    1. ' Mailinhalt (Text)
    2. g.DrawString("Mitteilungsinhalt:", F_Courier11b, Brushes.Black, RandLinks, AnfangsZeile)
    3. AnfangsZeile += Zeilenhoehe
    4. 'g.DrawString(mail.Body, F_Courier11n, Brushes.Black, RandLinks, AnfangsZeile)
    5. Dim SF As StringFormat = StringFormat.GenericDefault
    6. Dim Ft As Font = F_Courier11n
    7. Dim AllowedHeight As Integer = 0
    8. If Page = 1 Then
    9. AllowedHeight = e.MarginBounds.Height - 240
    10. Else
    11. AllowedHeight = e.MarginBounds.Height - 130
    12. End If
    13. Dim SB As New System.Text.StringBuilder(mail.Body.Substring(_CharsPrinted))
    14. Dim LinesFilled, CharsFitted As Integer ' werden von MeasureString() eingetragen (ByRef)
    15. Dim Sz As SizeF = g.MeasureString(SB.ToString, Ft, e.MarginBounds.Size, SF, CharsFitted, LinesFilled)
    16. ' Sinnigerweise zählt MeasureString() auch nur halb dargestellte Characters als "fitted".
    17. ' Da wir das beim Drucken anders sehen, Gegenprobe (Messung innerhalb einer quasi nach
    18. ' unten offenen Size):
    19. Sz.Height = Short.MaxValue
    20. ' Maße des druckbaren Bereichs
    21. Dim X As Double = e.MarginBounds.Left
    22. Dim Y As Double = e.MarginBounds.Top
    23. Dim B As Double = e.MarginBounds.Width
    24. Dim H As Double = e.MarginBounds.Height
    25. Dim drawRect As New RectangleF(RandLinks, AnfangsZeile, B, Sz.Height) 'AnfangsZeile + 20
    26. While g.MeasureString(SB.ToString(0, CharsFitted), Ft, Sz, SF).Height > AllowedHeight
    27. CharsFitted -= 1
    28. End While
    29. g.DrawString(SB.ToString(0, CharsFitted), Ft, Brushes.Black, drawRect, SF)
    30. _CharsPrinted += CharsFitted


    Gru0
    lris

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „lris08“ ()