【问题标题】:WPF to XPS with outline and structureWPF 到 XPS 的轮廓和结构
【发布时间】:2015-03-27 10:05:33
【问题描述】:

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

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

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

【问题讨论】:

  • 您绝对可以从FlowDocument 生成一个 XPS 文档,因为我们在我们的一个工作应用程序中执行此操作。不过,我仍然不完全清楚您所说的“保留其结构”是什么意思。您能否在您的问题中进一步扩展这一点?
  • FlowDocument 不是 WPF 控件,它是 .NET 类。 FlowDocumentScrollViewer 是一个 WPF 控件。
  • @Dmitry B - 好的,在点击链接和谷歌搜索之后,我对你所追求的更加清楚。不幸的是,这似乎是很少使用的 XPS 领域,而且似乎很少有文档或使用它的人。原则上,您应该能够根据FlowDocument 的内容确定结构,但我所知道的从FlowDocument 元素生成 XPS 的现有方法不会让您对生成的 ZIP 结构具有一定程度的控制权我不认为你需要实现这一点。
  • @Blam 抱歉,通过 WPF Control 我暗示了可以序列化为 Xps 文档的 WPF 元素。
  • @StevenRands 是的,这就是我想要的。经过一番调查,我根据您的评论写了一个答案。

标签: c# wpf flowdocument xps fixeddocument


【解决方案1】:

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

Convert XAML Flow Document to XPS with Style (multiple page, page size, header, margin)

【讨论】:

  • 这篇文章提到了 XpsSerializationManager,但您似乎无法使用此类向生成的 Xps 文档添加结构。
【解决方案2】:

似乎没有办法在使用XpsDocumentWriterXpsSerializationManager 序列化WPF 元素语义时保留它。

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

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 元素的类并且它是子元素,但在写入资源流时不能使用它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 2014-11-21
    • 1970-01-01
    • 2021-01-05
    • 2011-01-30
    • 2015-05-07
    相关资源
    最近更新 更多