Saludos, Tengo un problema con la impresión en WPF. Estoy creando un documento de flujo y agrego algunos controles a ese documento de flujo. Vista previa de impresión funciona bien y no tengo ningún problema con la impresión desde una ventana de vista previa de impresión. El problema existe cuando imprimo directamente en la impresora sin una vista previa de impresión. Pero lo que es más sorprendente: cuando uso XPS Document Writer como impresora todo está bien, cuando uso alguna impresora física, algunos controles en mi documento de flujo no se muestran. Gracias de antemanoWPF Printing Flow Documento
Respuesta
documentos XPS se puede imprimir sin problemas
he dado cuenta de una cosa: consejo: los controles que no se muestran son los controles estoy fuerza obligatoria algunos datos, por lo que la conclusión es que la el enlace no funciona ¿Puede ser que el enlace no se esté ejecutando antes de enviar el documento a la impresora?
Peter, un consejo de uso para Stackoverflow: si desea agregar información, debe editar su pregunta original, no publicar "respuestas". En general, si desea responder a una respuesta en particular, use un comentario (¡mmm, excepto que tal vez no pueda!) – Murph
bien, desde ahora lo haré, gracias por la sugerencia –
Lo importante a tener en cuenta: Puede usar XpsDocumentWriter incluso cuando imprima directamente en una impresora física. ¡No cometa el error que cometí al evitarlo solo porque no está creando un archivo .xps!
De todos modos, tuve el mismo problema, y ninguno de los hacks DoEvents()
parecía funcionar. Además, no estaba muy contento de tener que usarlos en primer lugar. En mi situación, algunos de los controles de datos impresos bien, pero algunos otros (UserControls anidados) didnt. Era como si solo un 'nivel' estuviera siendo enlazado a datos y el resto no se uniría incluso con un 'DoEvents()' piratear.
La solución fue simple. Use XpsDocumentWriter de esta manera. abrirá un cuadro de diálogo en el que puede elegir la impresora física instalada que desee.
// 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);
encontré el libro de OReilly en 'Programming WPF' bastante útil con su capítulo sobre Printing - found through Google Books.
Si no desea que aparezca un cuadro de diálogo de impresión, pero desea imprimir directamente a la impresora predeterminada, puede hacer lo siguiente. (Para mí, la aplicación es para imprimir hojas de embalaje en un entorno de almacén, y no quiero que aparezca un cuadro de diálogo cada vez).
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);
Tuve un problema similar y esto hizo no arregla el problema –
- 1. JQPlot Printing
- 2. Flex Printing - ¿Se puede hacer?
- 3. Printing Table's structure/schema
- 4. Photo Printing Service/API
- 5. Delphi Printing Techniques
- 6. css printing size
- 7. C++ cout printing slowly
- 8. Twitter API - OOB Flow
- 9. Magento Payment flow
- 10. Spring Web Flow LockTimeoutException
- 11. boost :: property_tree XML pretty printing
- 12. bash "&" without printing "[1] + Listo"
- 13. Firefox printing only 1st page
- 14. python "help" function: printing docstrings
- 15. Android Cloud Printing sin cuadros de diálogo
- 16. C++ GDB Python Pretty Printing Tutorial?
- 17. Printing Runtime exec() OutputStream a la consola
- 18. Git-flow reapertura de una función finalizada
- 19. OAuth flow, iPhone -> Rieles -> Facebook
- 20. Usando Context Manager para Control Flow
- 21. Java Thread Management y Application Flow
- 22. Git-flow y funcionalidad específica del cliente
- 23. Tutorial para Spring Web Flow usando Eclipse
- 24. ¿Quién está usando con éxito git-flow?
- 25. Git flow branch para arreglar un error
- 26. Conversión de control WPF (XAML) en documento XPS
- 27. $ (documento) vs. $ ("documento")
- 28. Instalar git-flow en Ubuntu 10.10 falla silenciosamente
- 29. Paypal Embedded Flow no usa returnUrl o cancelUrl
- 30. ¿Cómo puedo usar grant_type = contraseña oauth flow con salesforce.com?
Saludos, he resuelto el problem.I encontró que la unión y el envío de documentos a la impresora son de forma asincrónica operaciones. Así que hice un Appliaction.DoEvents() equivalente en WPF basado en el artículo de BeaStolnitz. Esto resolvió el problema http://bea.stollnitz.com/blog/index.php?s=doevents –
El enlace en el comentario anterior ya no funciona, pero indagar en el sitio al que redirige me llevó a un artículo con el enfoque DoEvents: http://www.zagstudio.com/blog/493#.UegOCo1dyaI –