首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用XPS查看器打开另存为XPS文档的FlowDocument?

使用XPS查看器打开另存为XPS文档的FlowDocument?
EN

Stack Overflow用户
提问于 2010-05-08 23:00:37
回答 1查看 5.2K关注 0票数 6

我使用以下代码和扩展名为xps的fileName将WPF FlowDocument保存到文件系统:

代码语言:javascript
运行
复制
// Save FlowDocument to file system as XPS document
using (var fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
    var textRange = new TextRange(m_Text.ContentStart, m_Text.ContentEnd);
    textRange.Save(fs, DataFormats.XamlPackage);
}

我的应用程序可以使用以下代码重新加载文档:

代码语言:javascript
运行
复制
// Load file
using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
    m_Text = new FlowDocument();
    var textRange = new TextRange(m_Text.ContentStart, m_Text.ContentEnd);
    textRange.Load(fs, DataFormats.XamlPackage);
}

但是,Windows 7随附的XPS查看器无法打开这些文件。保存的XPS文件显示XPS图标,但当我双击其中一个文件时,XPS查看器无法打开它。错误消息为“XPS查看器无法打开此文档”。

你知道我需要对XPS文档做些什么才能让XPS查看器打开它吗?谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-24 21:20:13

正如Michael评论的那样,FlowDocument与XPS文档不同。FlowDocuments用于在屏幕上阅读,当窗口大小改变时将自动回流,而XPS文档的布局是固定的。

编写XPS文档所需的类称为XpsDocument。您需要引用ReachFramework.dll程序集才能使用它。下面是一个将FlowDocument保存到XPS文档的方法的简短示例:

代码语言:javascript
运行
复制
using System.IO;
using System.IO.Packaging;
using System.Windows.Documents;
using System.Windows.Xps.Packaging;
using System.Windows.Xps.Serialization;

namespace XpsConversion
{
    public static class FlowToXps
    {
        public static void SaveAsXps(string path, FlowDocument document)
        {
            using (Package package = Package.Open(path, FileMode.Create))
            {
                using (var xpsDoc = new XpsDocument(
                    package, System.IO.Packaging.CompressionOption.Maximum))
                {
                    var xpsSm = new XpsSerializationManager(
                        new XpsPackagingPolicy(xpsDoc), false);
                    DocumentPaginator dp = 
                        ((IDocumentPaginatorSource)document).DocumentPaginator;
                    xpsSm.SaveAsXaml(dp);
                }
            }
        }
    }
}

Feng Yuan has a larger example on his blog (包括如何添加页眉和页脚以及重新缩放输出)。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2794532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档