wpf pagination rtf flowdocument

wpf - Imprimir RTF con encabezados y pies de página-¿FlowDocument u otra cosa?



pagination (2)

Eche un vistazo a este blogpost de MSDN, ya que están haciendo casi lo mismo que usted. Con un DocumentPaginator personalizado para escalar las páginas originales. Creo que esto debería ser el truco. También lo utilicé hace mucho tiempo y los encabezados y pies de página no fueron un problema.

He estado buscando importar un RTF en un documento de flujo, obstinadamente para propósitos de impresión desatendida; después de muchos intentos, el uso de un FlowDocument parecía ser el enfoque correcto. Tengo el RTF para que funcione en general, sin embargo, los pies de página desaparecen al cargar el RTF en un FlowDocument.

El RTF se generó en Word, y cuando se carga en Wordpad, los pies de página son visibles, por lo que solo puedo asumir que estoy cargando el documento incorrectamente, o es un problema con el paginador predeterminado, o posiblemente ambos.

Esto es lo que tengo hasta ahora, que carga el archivo y hace la impresión:

[STAThread] public static int Main(string[] args) { var documentPath = @"C:/temp/Example.rtf"; var fileStream = File.Open(documentPath, FileMode.Open, FileAccess.Read, FileShare.Read); // Load the RTF into the flow document var flowDocument = new FlowDocument(); TextRange textRange = new TextRange(flowDocument.ContentStart, flowDocument.ContentEnd); textRange.Load(fileStream, DataFormats.Rtf); flowDocument.ColumnWidth = double.PositiveInfinity; var t = new Thickness(72); flowDocument.PagePadding = t; // Page margin // Get printer var queue = LocalPrintServer.GetDefaultPrintQueue(); var capa = queue.GetPrintCapabilities(); // Configure paginator var paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator; paginator.PageSize = new Size(capa.OrientedPageMediaWidth.Value, capa.OrientedPageMediaHeight.Value); // ...and print. var writer = System.Printing.PrintQueue.CreateXpsDocumentWriter(queue); writer.Write(paginator); return 0; }

... más allá de eso, estoy perdido. No está claro si los pies de página simplemente no se han cargado (y por lo tanto no son parte del FlowDocument): sospecho que este es el caso ya que estamos cargando en un TextRange que marca el inicio y el final del contenido principal de FlowDocument; pero también sospecho que podría necesitar un paginador personalizado también.

¿Hay algún indicador de los documentos que me faltan? Una búsqueda en google de "paginador de documento de flujo de importación de pie de página RTF" (y similar) (hasta ahora) no ha revelado ningún resultado pertinente. Lo más cercano que he encontrado hasta ahora es esta pregunta ASÍ , pero esto no cubre buscar el encabezado / pie de página de un archivo RTF.


Para proporcionar la propiedad de encabezado y pie de página durante la impresión, generalmente manejamos el evento PrintPage y proporcionamos estas características en este controlador de eventos. Aquí hay una muestra para su referencia. Aunque este ejemplo es una clase de impresora para DataGridView, puede tomar la lógica de agregar las características de encabezado y pie de página.

· Http://www.codeproject.com/KB/cs/DGVPrinter.aspx

Si está usando WebBrowser para imprimir el HTML, puede personalizar el encabezado y el pie de página como se menciona en el siguiente artículo.

· Http://www.codeproject.com/KB/miscctrl/tips.aspx#tip3.8.2