Wpf 打印带有页眉和页脚的RTF-FlowDocument还是其他?

Wpf 打印带有页眉和页脚的RTF-FlowDocument还是其他?,wpf,pagination,rtf,flowdocument,Wpf,Pagination,Rtf,Flowdocument,我一直在考虑将RTF导入到flowdocument中,顽固地用于无人值守的打印;经过多次试探,使用FlowDocument似乎是正确的方法。我已经让RTF正常工作,但是在将RTF加载到FlowDocument中时,页脚会消失 RTF是在Word中生成的,当加载到Wordpad中时,页脚是可见的,因此我只能假设加载的文档是错误的,或者是默认分页器的问题,或者两者都有可能 这是我目前所拥有的,它加载文件并进行打印: [STAThread] 公共静态int Main(字符串[]args) { var

我一直在考虑将RTF导入到flowdocument中,顽固地用于无人值守的打印;经过多次试探,使用FlowDocument似乎是正确的方法。我已经让RTF正常工作,但是在将RTF加载到FlowDocument中时,页脚会消失

RTF是在Word中生成的,当加载到Wordpad中时,页脚是可见的,因此我只能假设加载的文档是错误的,或者是默认分页器的问题,或者两者都有可能

这是我目前所拥有的,它加载文件并进行打印:

[STAThread]
公共静态int Main(字符串[]args)
{
var documentPath=@“C:\temp\Example.rtf”;
var fileStream=File.Open(documentPath,FileMode.Open,FileAccess.Read,FileShare.Read);
//将RTF加载到流文档中
var flowDocument=新的flowDocument();
TextRange TextRange=新的TextRange(flowDocument.ContentStart,flowDocument.ContentEnd);
Load(fileStream、DataFormats.Rtf);
flowDocument.ColumnWidth=double.PositiveInfinity;
var t=新厚度(72);
flowDocument.PagePadding=t;//页边距
//获取打印机
var queue=LocalPrintServer.GetDefaultPrintQueue();
var capa=queue.GetPrintCapabilities();
//配置分页器
var paginator=((IDocumentPaginatorSource)flowDocument)。DocumentPaginator;
paginator.PageSize=新大小(capa.orientedmanagediawidth.Value,capa.orientedmanagediaheight.Value);
//…和打印。
var writer=System.Printing.PrintQueue.CreateXpsDocumentWriter(队列);
书写者,书写者;
返回0;
}
…除此之外,我还不知所措。不清楚页脚是否只是没有加载(因此不是FlowDocument的一部分)——我怀疑是这样的,因为我们正在加载到标记主要FlowDocument内容开始和结束的TextRange中;但我也怀疑我可能还需要一个定制的分页器


是否有任何指向我丢失的文档的指针-谷歌搜索“RTF footer import flowdocument paginator”(以及类似内容)到目前为止没有显示任何相关结果。到目前为止,我发现最接近的是,但这不包括从RTF文件中获取页眉/页脚。

看看它们的操作与您的操作几乎相同。使用自定义DocumentPaginator缩放原始页面。我认为这应该能奏效。很久以前我也使用过它,页眉和页脚没有问题。

为了在打印期间提供页眉和页脚属性,我们通常处理PrintPage事件,并在此事件处理程序中提供这些功能。这是一个样品供你参考。尽管此示例是DataGridView的打印机类,但您可以采用添加页眉和页脚功能的逻辑

·

如果您使用WebBrowser打印HTML,您可以自定义页眉和页脚,如本文所述


·

您是否尝试在流程文档中使用段落?我不明白--段落如何与页眉/页脚相关联?如果我能理解你的想法,我可能会提供一个更好的评论。RTF中有我要导入的段落,我可以假设它们是作为FlowDocument段落导入的。在这里插入风,但将
FlowDocument.ContentStart,FlowDocument.ContentEnd
与此无关?这是导入RTF数据的范围。我看不到任何指定页眉/页脚范围的方法;了解我对FlowDocument所做的工作,这可能是准确的,因为页眉/页脚是分页的一个方面,因此认为这需要由自定义分页器处理。然后问题是获取
{\footer
(以及类似内容)RTF段被解析和处理。你应该添加与文章相关的引号/代码/注释以提高你的文章质量:)@newagrition你的意思是我需要复制文章。我不喜欢从文章中复制很长的代码。我想这说明了Enough这是各种博客上的变体,向我展示了如何获取页眉/页脚使用自定义分页器。缺少的链接是将RTF页眉/页脚放入其中。现在,我可以手动解析RTF DOM,将RTF转换为合适的内容(可能很复杂,适合不同的字段代码(样式、对齐方式、代码等),但如果FlowDocument能够以本机方式解析RTF,那将是理想的。然后,另一个问题是解析RTF中编码的特殊字段代码(例如,页码)并手动处理这些代码。但您现在面临的真正问题是无法在fixedDocument(XPS)中显示页眉和页脚对吗?页眉和页脚在FlowDocument中不是某种
块吗?这就是我不知道的:页眉/页脚在FlowDoc中吗?在那篇博客文章中,他们正在创建一个带有固定文本(“页面”)的手动页眉/页脚;因此,博客没有添加太多内容-它们似乎没有从正在处理的流文档中提取页眉/页脚。但关键点是如何从RTF文件中获取和解析页眉/页脚?我现在已经看到了许多使用自定义分页器获取页眉/页脚的示例,但没有任何内容告诉我如何获取页眉/页脚探索RTF的
{\footer
部分(等),这是关键问题。