具有轮廓和结构的 WPF 到 XPS



我正在开发一个WPF报告应用程序。

我的报表构造为 WPF 控件(流文档或固定文档)和包含表。我想将其保存为保留其结构的XPS(这意味着我可以将表复制为表,而不是本文中解释的纯文本)。我找到了一种使用 XpsDocumentWriter 或 XpsSerializationManager 保存 WPF 控件的方法,但结果没有结构或大纲。

是否可以将 WPF 控件保存为 Xps 保留其结构?

XPS是一种固定的文档格式,WPF允许您将FlowDocument作为XPS文件保存到FixedDocument,当您想要添加更多功能时需要代码,您可以按照本文进一步了解。

将 XAML 流文档转换为具有样式的 XPS(多页、页面大小、页眉、边距)

在使用 XpsDocumentWriterXpsSerializationManager 对其进行序列化时,似乎无法保留 WPF 元素语义。

构造具有结构的文档的唯一方法是使用命名空间System.Windows.Xps.Packaging低级 API,如本文所述。使用此 API,您可以获取用于构建FixedPage内容XmlWriter

XpsDocument document = new XpsDocument(destFileName,FileAccess.ReadWrite); 
IXpsFixedDocumentSequenceWriter docSeqWriter = document.AddFixedDocumentSequence(); 
IXpsFixedDocumentWriter docWriter = docSeqWriter.AddFixedDocument(); 
IXpsFixedPageWriter pageWriter = docWriter.AddFixedPage();
XmlWriter xmlWriter = pageWriter.XmlWriter;

和编写文档结构的Stream

XpsResource storyFraments = pageWriter.AddStoryFragment();
Stream stream = storyFraments.GetStream();

尽管 System.Windows.Documents.DocumentStructures 同名中存在表示StoryFragments元素及其子元素的类,但在写入资源流时不能使用它们。

相关内容

  • 没有找到相关文章

最新更新