Los documentos dinámicos están diseñados para optimizar su presentación y legibilidad y son óptimos para su uso cuando la facilidad de lectura constituye el principal escenario de consumo del documento. Una página web constituye un ejemplo sencillo de un documento dinámico donde se da formato al contenido de la página dinámicamente para ajustarlo a la ventana activa.
WPF divide los documentos en dos categorías generales basándose en su uso previsto; estas categorías de documento se denominan "documentos fijos" y "documentos dinámicos".
Los documentos dinámicos están diseñados para optimizar su presentación y legibilidad y son óptimos para su uso cuando la facilidad de lectura constituye el principal escenario de consumo del documento. En lugar de establecerse en un diseño predefinido, este tipo de documentos ajusta y recoloca dinámicamente su contenido basándose en variables de tiempo de ejecución, tales como el tamaño de la ventana, la resolución del dispositivo y las preferencias opcionales del usuario. Una página web constituye un ejemplo sencillo de un documento dinámico donde se da formato al contenido de la página dinámicamente para ajustarlo a la ventana activa. Los documentos dinámicos optimizan la experiencia de visualización y lectura del usuario, basándose en el entorno de tiempo de ejecución. Por ejemplo, el mismo documento dinámico cambiará su formato dinámicamente para aportar una legibilidad óptima en una pantalla de 19 pulgadas de alta resolución o en la pequeña pantalla de un PDA de 2 x 3 pulgadas. Además, los documentos dinámicos tienen varias características integradas que incluyen la búsqueda, modos de presentación que optimizan la legibilidad y la capacidad de cambiar el tamaño y la apariencia de las fuentes.
La docuemtación de Microsoft Información general sobre documentos dinámicos es francamente buena y contiene ilustraciones, ejemplos e información detallada sobre documentos dinámicos.
Private Sub EsturdioPreliminarFlowDocument() '---------------------------------------------------------------------------------- 'Bibliografía 'https://www.codeproject.com/Articles/33076/WPF-Printing-Basic-Text-Printing 'WPF Printing - Basic Text Printing 'Este artículo te enseña cómo realizar la impresión de texto básico en WPF. '---------------------------------------------------------------------------------- 'En primer lugar, vamos a crear un texto para imprimir Dim textoParaImprimir As String = "Imprime este texto tan importante" ' En segundo lugar, vamos a crear el título impresión: este es el texto que aparecerá en la cola de ' impresión de Windows al abrir la impresora y ver los trabajos de impresión. ' Sólo aparece mientras el trabajo se está imprimiendo. Dim nombreTrabajoImpresion As String = "Mi primer trabajo de impresión." ' Lo siguiente que debemos es crear una nueva instancia de la clase [PrintDialog]. ' Esta clase no solo se utiliza para mostrar un cuadro de diálogo de impresión ' para que el usuario pueda seleccionar una impresora y modificar las opciones de impresora, ' también puede ser utilizado para realizar la impresión, incluso sin mostrar el ' cuadro de diálogo Imprimir.PrintDialog Dim diag As New PrintDialog() ' Sin embargo, vera rápidamente que la clase PrintDocument no funciona de esta manera. ' El método PrintDocument toma un DocumentPaginator (System.Windows.Documents.DocumentPaginator). ' y como DocumentPaginator es una clase "Must Inherit" (abstract), no se puede crear una nueva instancia de la misma. ' ¿Por lo tanto, cómo conseguimos uno? ' Aqui es donde la cosa se pone un poco complicadilla... ' La clase FlowDocument (System.Windows.Documents.FlowDocument) ' es una clase que puede utilizar para guardar y dar formato al texto que queremos imprimir. ' Aunque la clase FlowDocument no es un DocumentPaginator, ' implementa la interfaz IDocumentPaginatorSource.DocumentPaginator ' que proporciona acceso a su DocumentPaginator ' Desgraciadamente, el constructor de la claseFlowDocument acepta como argumento un objeto ' (System.Windows.Documents.Block), que, convenientemente, es otra clase "Must Inherit" (abstract) . ' Como la clase Paragraph (System.Windows.Documents.Paragraph) hereda de la clase (Block), ' puede utilizarse como argumento en su lugar. ' Crear una clase Run, pasando en el constructor el texto ' La case run contiene el texto que se va a imprimir Dim r As New Run(textoParaImprimir) ' Crear una clase Paragraph pasándole la instancia de la clase Run Dim ph As New Paragraph(r) 'Crear el documento (FlowDocument) pasando la instancia de la clase párrafo Dim doc As New FlowDocument(ph) ' crear el margen de alrededor de la pagina Dim margenPagina As New Thickness() margenPagina.Bottom = 100 margenPagina.Left = 100 margenPagina.Right = 100 margenPagina.Top = 100 doc.PagePadding = margenPagina ' alternativa para los cuatro bordes iguales doc.PagePadding = New Thickness(100) ' Enviar el documento a la impresora diag.PrintDocument( CType(doc, IDocumentPaginatorSource).DocumentPaginator, nombreTrabajoImpresion) End Sub
Todo lo anterior, se puede condensar en una funcion que hace el mismo trabajo
Public Sub PrintUsingDocumentCondensed(ByVal textoParaImprimir As String, Optional ByVal nombreTrabajoImpresion As String = "") ' Crear una clase Run, pasando en el constructor el texto ' Crear una clase Paragraph pasándole la instancia de la clase Run ' Crear el documento (FlowDocument) pasando la instancia de la clase párrafo Dim doc As New FlowDocument(New Paragraph(New Run(textoParaImprimir))) ' Crear el margen de alrededor de la pagina doc.PagePadding = New Thickness(100) ' Se utiliza para realizar la impresión Dim diag As New PrintDialog() ' Enviar el documento (directamente) a la impresora diag.PrintDocument( CType(doc, IDocumentPaginatorSource).DocumentPaginator, nombreTrabajoImpresion) End Sub
© 1997 - - La Güeb de Joaquín | |||||
Joaquín Medina Serrano
|
|||||
|
Codificación | |
Fecha de creación | |
Última actualización | |
![]() |