Grüße, Ich habe ein Problem mit dem Drucken in WPF. Ich erstelle ein Flow-Dokument und füge diesem Flow-Dokument einige Steuerelemente hinzu. Die Druckvorschau funktioniert einwandfrei und ich habe kein Problem mit dem Drucken aus einem Druckvorschau-Fenster. Das Problem besteht, wenn ich ohne Druckvorschau direkt an den Drucker drucke. Aber was ist überraschender - wenn ich XPS Document Writer als Drucker verwende ist alles in Ordnung, wenn ich einen physischen Drucker verwende, werden einige Steuerelemente in meinem Flow-Dokument nicht angezeigt. Vielen Dank im VorausWPF Drucken Flow Dokument
Antwort
XPS-Dokument kann ohne Probleme gedruckt werden
i eins bemerkt haben: Tipp: die Kontrollen, die nicht angezeigt werden, sind die Kontrollen ich einige Daten bin verbindlich, so die Schlussfolgerung ist, dass die Bindung funktioniert nicht. Kann es sein, dass die Bindung nicht ausgeführt wird, bevor das Dokument an den Drucker gesendet wird?
Peter, ein Verwendungstipp für Stackoverflow - wenn Sie Informationen hinzufügen möchten, sollten Sie Ihre ursprüngliche Frage bearbeiten, nicht "Antworten" posten. Im Allgemeinen, wenn Sie auf eine bestimmte Antwort antworten möchten, verwenden Sie einen Kommentar (hmm, außer dass Sie vielleicht noch nicht können!) – Murph
ok, ab jetzt werde ich es tun, danke für den Tipp –
Wichtig zu beachten: Sie können XpsDocumentWriter auch verwenden, wenn Sie direkt auf einen physischen Drucker drucken. Machen Sie nicht den Fehler, dass ich es vermieden habe, nur weil Sie keine .xps-Datei erstellen!
Wie auch immer - ich hatte das gleiche Problem, und keiner der DoEvents()
Hacks schien zu funktionieren. Ich war auch nicht besonders glücklich darüber, sie überhaupt benutzen zu müssen. In meiner Situation einige der datengebundenen Steuerelemente ausgedruckt, aber einige andere (verschachtelte UserControls) nicht. Es war so, als ob nur eine "Ebene" mit Daten verbunden wäre und der Rest würde selbst mit einem "DoEvents()" - Hack nicht binden.
Die Lösung war jedoch einfach. Verwenden Sie XpsDocumentWriter wie folgt. Es öffnet sich ein Dialog, in dem Sie den installierten physischen Drucker auswählen können.
// 8.5 x 11 paper
Size sz = new Size(96 * 8.5, 96 * 11);
// create your visual (this is a WPF UserControl)
var template = new PackingSlipTemplate()
{
DataContext = new PackingSlipViewModel(order)
};
// arrange
template.Measure(sz);
template.Arrange(new Rect(sz));
template.UpdateLayout();
// print to XpsDocumentWriter
// this will open a dialog and you can print to any installed printer
// not just a 'virtual' .xps file
PrintDocumentImageableArea area = null;
XpsDocumentWriter xps = PrintQueue.CreateXpsDocumentWriter(ref area,);
xps.Write(template);
fand ich das Buch OReilly auf ‚Programming WPF‘ ganz mit dem Kapitel über Printing - found through Google Books nützlich.
Wenn Sie erscheinen nicht ein Druckdialog wollen, wollen aber direkt an den Standarddrucker drucken Sie Folgendes ausführen können. (Für mich besteht die Anwendung darin, Packzettel in einer Lagerumgebung auszudrucken - und ich möchte nicht, dass jedes Mal ein Dialog erscheint).
var template = new PackingSlipTemplate()
{
DataContext = new PackingSlipViewModel(orders.Single())
};
// arrange
template.Measure(sz);
template.Arrange(new Rect(sz));
template.UpdateLayout();
LocalPrintServer localPrintServer = new LocalPrintServer();
var defaultPrintQueue = localPrintServer.DefaultPrintQueue;
XpsDocumentWriter xps = PrintQueue.CreateXpsDocumentWriter(defaultPrintQueue);
xps.Write(template, defaultPrinter.DefaultPrintTicket);
Hatte ein ähnliches Problem und das tat behebe das Problem nicht. –
- 1. WPF-Flow-Dokument: Zellenhöhe anpassen, wenn Code hinter
- 2. Flow-Dokument, Datensatz oder Datenraster Ansicht
- 3. Wie pdf.js Dokument zu drucken?
- 4. Drucken eines WPF BitmapImage
- 5. Drucken Multipage in WPF
- 6. WPF (XAML) Control in XPS-Dokument konvertieren
- 7. WPF: Drucken eines mehrseitigen TextBlocks
- 8. WPF Drucken FlowDocument nicht Zentrieren
- 9. C#/WPF: Drucken einer ListView
- 10. Drucken von zwei Jpanels in einem Dokument
- 11. Dokument mit pdfjs im Edge-Browser drucken
- 12. Generieren, Anzeigen und Drucken von einfachen Dokument in .NET
- 13. WPF-Dokument: Abrufen der Tabellenzellenrahmen richtig
- 14. Jedes XML-Dokument an WPF TreeView binden
- 15. Wie der Abstand zwischen Absatz in einem Flow-Dokument durch Programmierung anpassen
- 16. Angular mit ng-flow: existing flow objekt
- 17. Wie wird direkt gedruckt, ohne Druckdialog in WPF?
- 18. Drucken eines WPF Visual mit Bildern
- 19. WPF: Drucken von FlowDocument ohne Druckdialog
- 20. WPF FlowDocument Drucken nur auf kleinen Bereich
- 21. WPF - Seitennummerierung beim Drucken eines visuellen
- 22. Java Flow
- 23. HTML-Dokument vom Windows-Dienst in C# ohne Druckdialog drucken
- 24. Wie kann ich Windows bitten, ein Dokument zu drucken?
- 25. Dokument programmgesteuert mit VBA in Outlook 2007 drucken
- 26. So drucken Sie ein beliebiges Dokument in einem SELECTED-Drucker
- 27. beste Breite von HTML/PDF-Dokument zum Drucken
- 28. HTML-Dokument von Windows-Dienst ohne Druckdialog drucken
- 29. Erstellen PDF-Dokument zum Drucken in Qt aus Vorlage
- 30. Paginierung HTML-Dokument für das Drucken mit WebKit-basierten Browsern
Grüße, Ich habe das Problem gelöst.Ich habe festgestellt, dass Bindung und Senden von Dokumenten an den Drucker asynchrone Operationen sind. Also habe ich eine Appliaction.DoEvents() Entsprechung in WPF basierend auf BeaStolnitz Artikel erstellt. Dies löste das Problem http://bea.stollnitz.com/blog/index.php?s=doevents –
Der Link in dem obigen Kommentar funktioniert nicht mehr, aber auf der Website, die es umgeleitet leitet auf der Suche nach mir Artikel mit dem DoEvents-Ansatz: http://www.zagstudio.com/blog/493#.UegOCo1dyaI –