Wechsel von Hoch- auf Querformat funktioniern nicht mit PDF-Drucker

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von guromu.

    Wechsel von Hoch- auf Querformat funktioniern nicht mit PDF-Drucker

    Hallo,

    mit folgendem Code wird bei einem Ausdruck die erste Seite im Hochformat und die Folgeseiten im Querformat ausgegeben.
    Funktioniert alles problemlos.
    Allerdings möchten meine Kollegen das jetzt direkt als PDF-Datei drucken.
    Nur der PDF-Drucker spielt nicht mit.
    Der verweigert erfolgreich die Zusammenarbeit.
    Der druckt von Anfang bis Ende im Hochformat.
    Alle Drucker im System machen das problemlos mit. Auch die Druckvorschau.

    Als PDF-Drucker habe ich FreePDF und PDF Creator getestet.

    Hat da jemand eine Idee ?


    VB.NET-Quellcode

    1. Private Sub Druckdokument_QueryPageSettings(ByVal sender As Object, ByVal e As QueryPageSettingsEventArgs) Handles Druckdokument.QueryPageSettings
    2. If Seite = 1 Then
    3. e.PageSettings.PaperSource = Druckdokument.PrinterSettings.PaperSources.Item(cboSeite1.SelectedIndex)
    4. e.PageSettings.Landscape = False ' Hochformat
    5. ElseIf Seite > 1 Then 'Wenn Seitenzahl > 1
    6. e.PageSettings.PaperSource = Druckdokument.PrinterSettings.PaperSources.Item(cboFolgeSeiten.SelectedIndex)
    7. e.PageSettings.Landscape = True 'Querformat
    8. end sub

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „guromu“ ()

    @guromu Setz mal in Deinen Code nen Haltepunkt rein und überzeuge Dich davon, dasser bei jeder Seite ausgeführt wird oder halt nicht.
    Falls nicht, probierma im PrintPage-Event über den Parameter e auf die PageSettings zuzugreifen.
    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!
    @Rod
    Das Problem mit dem PrintPage Event hatte ich schon in einem früheren Post.
    Da bin ich dann durch Zufall auf das QueryPageSettings-Event gestossen.

    Bei QueryPageSettings erfolgt die Abfrage vor jeder neuen Seite.
    Deshalb ist das für mich die einzige Möglichkeit.

    Es funktioniert ja auch alles bis auf PDF.

    @HenryV
    Danke mal für den Hinweis.
    Dem gehe ich auf jeden Fall mal nach wenn der PDF-Creator wieder läuft.
    Nach Absturz versuche ich krampfhaft das Teil neu zu installieren, ohne Erfolg.
    Am Ende kommt ne Fehlermeldung.
    Da hat sich sich irgendwas verklemmt.
    @guromu Bei mir geht das:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim seite As Integer = 0
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Using dlg = New PrintPreviewDialog
    5. dlg.Document = Me.PrintDocument1
    6. dlg.ShowDialog()
    7. End Using
    8. End Sub
    9. Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    10. e.Graphics.DrawString("Seite " & seite, New Font("Arial", 20), Brushes.Black, New Point(20, 20))
    11. seite += 1
    12. e.HasMorePages = seite < 3
    13. End Sub
    14. Private Sub PrintDocument1_QueryPageSettings(sender As Object, e As Printing.QueryPageSettingsEventArgs) Handles PrintDocument1.QueryPageSettings
    15. If Seite = 1 Then
    16. 'e.PageSettings.PaperSource = PrintDocument1.PrinterSettings.PaperSources.Item(0)
    17. e.PageSettings.Landscape = False ' Hochformat
    18. Else 'If Seite > 1 Then 'Wenn Seitenzahl > 1
    19. 'e.PageSettings.PaperSource = PrintDocument1.PrinterSettings.PaperSources.Item(1)
    20. e.PageSettings.Landscape = True 'Querformat
    21. End If
    22. End Sub
    23. Private Sub PrintDocument1_BeginPrint(sender As Object, e As Printing.PrintEventArgs) Handles PrintDocument1.BeginPrint
    24. seite = 1
    25. End Sub
    26. End Class
    TestQuer.pdf
    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!
    @Rod
    Microsoft Print to PDF hab ich bei meinem Win7 prof nicht drauf.
    Muss ich unserem Systemintegrator mal aufdrücken.

    Da spar ich mir wieder viel Aufwand.
    Danke

    Nachtrag:
    Microsoft Print to PDF ist leider erst ab Win8.1 verfügbar

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „guromu“ ()