none
Drucken RRS feed

  • Allgemeine Diskussion

  • Hallo zusammen

    Ich bin gerade dabei eine Druckfunktion bei meinem Programm zu erstellen. Dabei habe ich diverse Möglichkeiten angeschaut. Ich habe mich dann Entschieden dass ich ein Grid erstelle, die entsprechenden Controls auf das Grid platziere und dieses dann drucke (s. unteres Beispiel).

    var printDialog = new System.Windows.Controls.PrintDialog();
    
    if (printDialog.ShowDialog() == true)
    {
        Grid grid = new Grid();
    
        // Grid anpassen mit Children's, etc......
    
        printDialog.PrintVisual(grid, "Printjob");
    }

    Bei meinem neuen HP-Multifunktionsgerät hat das sauber geklappt, jedoch bei allen Geräten (ca. 4 Stück) im Geschäft wird nur eine leere Seite rausgegeben. Nun wollte ich euch fragen ob ihr wisst woran das liegt, dass nicht alle Drucker, das drucken können und ob es hier einen einfacheren bzw. besseren Weg gibt. Möglicherweise gibt es ja auch einen gewissen Standard den man implementieren könnte...

    Freundliche Grüsse

    Gezim95


    Gezim

    Mittwoch, 15. Juli 2015 10:00

Alle Antworten

  • Hallo Gezim,

    es gibt die PrintDocument-Klasse für solche Aufgaben. Alternativ gibt es auch Berichte im VisualStudio die man sich mit dem Designer zusammenstellen kann. 

    Mittwoch, 15. Juli 2015 10:41
  • Hallo Desert-Fox

    Danke für deine rasche Antwort. Ich habe mir mal den Tipp mit der PrintDocument-Klasse angeschaut, jedoch habe ich im Internet nur Beispiele gesehen mit WinForms. Hast du evtl. noch ein Beispiel mit WPF-Oberflächen.

    Gruss Gezim95


    Gezim

    Mittwoch, 15. Juli 2015 12:57
  • Ich selber habe kein Beispiel, aber vielleicht hilft dir das folgende Tutorial weiter

    WPF-Printing

    Mittwoch, 15. Juli 2015 13:12
  • Hallo nochmal

    Ich habe es so gelöst dass ich zu erst eine XPS-Datei erstelle und dann diese Drucke.

    // Erstellen einer Oberfläche Grid grid = new Grid(); //... // XPS-Datei erstellen XpsDocument document = new XpsDocument("test.xps", System.IO.FileAccess.ReadWrite);System.Windows.Xps.XpsDocumentWriter xpsdw = XpsDocument.CreateXpsDocumentWriter(document); xpsdw.Write(grid); document.Close(); // Drucker var localPrintServer = new System.Printing.LocalPrintServer(); System.Printing.PrintQueue defaultPrintQueue = System.Printing.LocalPrintServer.GetDefaultPrintQueue();

    System.Printing.PrintSystemJobInfo printjob = PrintQueue.AddJob("Printtest", "test.xps", false);

    Aber weiss jemand wie ich somit einen Drucker ansteuern kann bzw. wie ich ihm sagen kann dass er das Papier vom Fach2 rausholen soll.

    Gruss Gezim95


    Gezim


    • Bearbeitet Gezim95 Donnerstag, 16. Juli 2015 09:48
    Donnerstag, 16. Juli 2015 09:47