Drucken mehrseitig, Verständnisproblem und ein Problem was ich nicht verstehe

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von michl75.

    Drucken mehrseitig, Verständnisproblem und ein Problem was ich nicht verstehe

    Hallo,
    versuche eine mehrseitige Tiff-Datei zu drucken.
    Mit Anleitung von hier bzgl. "mehrseitig Drucken" habe ich schon mal eine Vorschau hinbekommen.

    Auf Bild p1 kann man sehen, dass die Vorschau erstellt wird... Jedoch, wird nur die zweite Seite angezeigt! Beim Erstellen, wenn man genau hinschaut, zeichnet er erst die erste Seite und zwack sofort die zweite Seite und die wird dann angezeigt.

    Klickt man dann auf das Druckersymbol oben link im Bild p1, wirft er Fehlermeldung - Bild p2 und p3 - aus. Das verwundert mich nun aber, zumal ja doch auch die Vorschau erstellen konnte? Das verstehe ich überhaupt nicht.

    Das ich da wo einen Fehler habe bzw. was nicht richtig verstanden habe ... bitte ich euch mir auf die Sprünge zu helfen. Was habe ich da falsch gemacht? Für mich ergibt das keinen Sinn und verstehe es gerade nicht.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. ...
    3. #Region "Drucken"
    4. Private Sub Tsbtn_Drucken_Dokument_Click(sender As Object, e As EventArgs) Handles TsBtn_Drucken_Dokument.Click
    5. Using dlg = PrintDialog1 ' Druckerauswahl, Druckereigenschaften, Papierausrichtung
    6. dlg.Document = Me.PrintDocument1
    7. If dlg.ShowDialog <> Windows.Forms.DialogResult.OK Then
    8. Return
    9. End If
    10. End Using
    11. Using dlg = PrintPreviewDialog1 ' Vorschau und Druck
    12. dlg.Document = Me.PrintDocument1
    13. If dlg.ShowDialog <> Windows.Forms.DialogResult.OK Then
    14. Return
    15. End If
    16. End Using
    17. End Sub
    18. Dim _SeitenIndex As Integer = 0
    19. Private Sub PrintDocument1_BeginPrint(sender As Object, e As PrintEventArgs) Handles PrintDocument1.BeginPrint
    20. _SeitenIndex = 1 ' aktuelle Seitennummer
    21. End Sub
    22. Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    23. For i As Integer = 0 To _Images_LoI.Count - 1
    24. Using img = _Images_LoI(i)
    25. e.Graphics.DrawImage(img, 20, 20, 800, 1100)
    26. e.Graphics.DrawString("AUSDRUCK ALS KOPIE | KEIN ORIGINAL", New Font("Aptos", 9), Brushes.Blue, New Point(10, 10))
    27. End Using
    28. If _SeitenIndex < (_ImagestotalPages + 1) Then
    29. e.HasMorePages = True
    30. _SeitenIndex += 1
    31. Else
    32. e.HasMorePages = False
    33. End If
    34. Next
    35. End Sub
    36. #End Region



    EDIT:

    mache ich es einfacher... dann wird gedruckt ohne Fehlermeldung aber nur Seite 2 v. 2.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Tsbtn_Drucken_Dokument_Click(sender As Object, e As EventArgs) Handles TsBtn_Drucken_Dokument.Click
    2. Using dlg = PrintDialog1 ' Druckerauswahl, Druckereigenschaften, Papierausrichtung
    3. dlg.Document = Me.PrintDocument1
    4. If dlg.ShowDialog <> Windows.Forms.DialogResult.OK Then
    5. Return
    6. Else
    7. PrintDocument1.Print()
    8. End If
    9. End Using
    10. End Sub
    11. Dim _SeitenIndex As Integer = 0
    12. Private Sub PrintDocument1_BeginPrint(sender As Object, e As PrintEventArgs) Handles PrintDocument1.BeginPrint
    13. _SeitenIndex = 1 ' aktuelle Seitennummer
    14. End Sub
    15. Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    16. For i As Integer = 0 To _Images_LoI.Count - 1
    17. e.Graphics.DrawImage(_Images_LoI(i), 20, 20, 800, 1100 * i)
    18. e.Graphics.DrawString("AUSDRUCK ALS KOPIE | KEIN ORIGINAL", New Font("Aptos", 9), Brushes.Blue, New Point(10, 10))
    19. If _SeitenIndex < _ImagestotalPages Then
    20. e.HasMorePages = True
    21. _SeitenIndex += 1
    22. Else
    23. e.HasMorePages = False
    24. _SeitenIndex = 1
    25. End If
    26. Next
    27. End Sub
    Bilder
    • p1.JPG

      39,37 kB, 723×778, 25 mal angesehen
    • p2.JPG

      46,49 kB, 998×306, 29 mal angesehen
    • p3.JPG

      96,67 kB, 1.219×389, 25 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „michl75“ ()

    Habe nun nach langen Lesen und Googeln hinbekommen... Druckt nun alle Seiten und das mit wenig Code...

    Für die die es Interessiert:

    VB.NET-Quellcode

    1. #Region "Drucken"
    2. Private bmpIndex As Integer = 0
    3. Private Sub Tsbtn_Drucken_Dokument_Click(sender As Object, e As EventArgs) Handles TsBtn_Drucken_Dokument.Click
    4. Using dlg = PrintDialog1 ' Druckerauswahl, Druckereigenschaften, Papierausrichtung
    5. Dim doc As PrintDocument = PrintDocument1
    6. dlg.Document = Me.PrintDocument1
    7. If dlg.ShowDialog <> Windows.Forms.DialogResult.OK Then
    8. Return
    9. End If
    10. End Using
    11. Using dlg = New PrintPreviewDialog ' Vorschau und Druck
    12. dlg.Document = Me.PrintDocument1
    13. If dlg.ShowDialog <> Windows.Forms.DialogResult.OK Then
    14. Return
    15. End If
    16. End Using
    17. End Sub
    18. Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    19. e.Graphics.DrawImage(_Images_LoI(bmpIndex), New Point(0, 0)) 'e.MarginBounds.Left, e.MarginBounds.Top))
    20. e.Graphics.DrawString("AUSDRUCK ALS KOPIE - KEIN ORIGINAL", New Font("Aptos", 9, FontStyle.Regular), Brushes.LightGreen, 20, 10)
    21. bmpIndex += 1
    22. If bmpIndex < _Images_LoI.Count Then
    23. e.HasMorePages = True
    24. End If
    25. End Sub
    26. Private Sub PrintDocument1_BeginPrint(sender As Object, e As PrintEventArgs) Handles PrintDocument1.BeginPrint
    27. bmpIndex = 0
    28. End Sub
    29. #End Region



    EDIT: Hab wohl doch einen Fehler noch drinnen....

    Wenn ich auf XPS Drucker gehe, zack und Seite 1 ... 2 wird gedruckt und gut ists, nehme ich einen "echten" Drucker her, bleibt das ganze auf Seite 1 hängen... es kommt keine Fehlermeldung nichts... es hängt einfach nur.

    Jemand eine Idee ?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „michl75“ ()

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das war die Anleitung an die ich mich gehalten habe + anderes ausprobiert.

    Was mich verwundert... Drucken funktioniert, wenn ich über XPS oder Windows PDF Drucker gehe... nehme ich normalen also echten Drucker, bleibts hängen.

    Ich weis gerade null wo ich da ansetzen soll.

    michl75 schrieb:

    bleibts hängen.
    Wie äußert sich das?
    Starten im Debug-Mode und Break?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Sorry das ich erst jetzt schreibe, bin vorher nicht dazu gekommen.

    Also ich starte den Druckvorgang mit Button klick, dann Kommt Druckerauswahl ... wie Bild P10, danach möchte er wohl drucken ... bleibt aber hängen wie in Bild P11.

    Halte Punkte mal gesetzt ... Hängen bleibt er bei ...

    VB.NET-Quellcode

    1. Private Sub Tsbtn_Drucken_Dokument_Click(sender As Object, e As EventArgs) Handles TsBtn_Drucken_Dokument.Click
    2. Using dlg = PrintDialog1 ' Druckerauswahl, Druckereigenschaften, Papierausrichtung
    3. If dlg.ShowDialog = Windows.Forms.DialogResult.OK Then
    4. PrintDocument1.Print()


    PrintDocument1.Print() ab hier ist dann nichts mehr los, drücke ich auf Abbrechen in dem kleinen Druckfenster, passiert auch nichts mehr. Muss über Visual Basic Debug abbrechen.
    Es kommen auch keine Fehlermeldungen ... konnte auchts entdecken, dass es Nothing wäre...

    PrintDialog habe ich über Editor auf das Form gelegt : siehe Bild P12
    Eben so PrintDocument per Editor auf Form : siehe Bild P13

    Und hier der aktuelle Code:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. #Region "Drucken"
    2. Private bmpIndex As Integer = 0
    3. Private Sub Tsbtn_Drucken_Dokument_Click(sender As Object, e As EventArgs) Handles TsBtn_Drucken_Dokument.Click
    4. Using dlg = PrintDialog1 ' Druckerauswahl, Druckereigenschaften, Papierausrichtung
    5. dlg.Document = PrintDocument1
    6. If dlg.ShowDialog = Windows.Forms.DialogResult.OK Then
    7. PrintDocument1.Print()
    8. End If
    9. End Using
    10. 'Using dlg = New PrintPreviewDialog ' Vorschau und Druck
    11. ' dlg.Document = Me.PrintDocument1
    12. ' If dlg.ShowDialog <> Windows.Forms.DialogResult.OK Then
    13. ' Return
    14. ' End If
    15. 'End Using
    16. End Sub
    17. Private Sub PrintDocument1_PrintPage(sender As Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    18. ' System.Drawing.Printing.PrintPageEventArgs
    19. ' Printing.PrintPageEventArgs
    20. e.Graphics.DrawImage(_Images_LoI(bmpIndex), New Point(0, 0)) 'e.MarginBounds.Left, e.MarginBounds.Top))
    21. e.Graphics.DrawString("AUSDRUCK ALS KOPIE - KEIN ORIGINAL", New Font("Aptos", 9, FontStyle.Regular), Brushes.LightGreen, 30, 10)
    22. bmpIndex += 1
    23. If bmpIndex < _Images_LoI.Count Then
    24. e.HasMorePages = True
    25. End If
    26. End Sub
    27. Private Sub PrintDocument1_BeginPrint(sender As Object, e As PrintEventArgs) Handles PrintDocument1.BeginPrint
    28. bmpIndex = 0
    29. End Sub
    30. #End Region


    Das ich da einen Fehler drinnen habe, bestimmt ... nur entdecken ist das :) Vielen Dank aber schon mal für die Hilfe :)

    Vg M

    Vollzitat und Textfarbe „Rot“ entfernt. ~Thunderbolt
    Bilder
    • p10.JPG

      30,54 kB, 698×322, 11 mal angesehen
    • p11.JPG

      9,3 kB, 292×188, 8 mal angesehen
    • P12.JPG

      23,96 kB, 334×374, 13 mal angesehen
    • P13.JPG

      18,84 kB, 450×281, 15 mal angesehen

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

    @michl75 Was passiert, wenn Du aus dem Notepad ein Dokument auf diesem Drucker druckst?
    Update mal Deinen Druckertreiber im Geräte-Manager.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!