在WPF中显示XPS文档

时间:2015-06-16 11:26:16

标签: wpf xps

我需要将数据从数据库显示到WPF应用程序并将其另存为XPS文档。我想将它显示为主窗口的一部分(使用工具栏,菜单和状态栏),而不是作为新窗口。

我应该使用什么样的控制?目前,我正在查看FixedDocument和FlowDocument。我是在正确的轨道上吗?关于如何开始的任何好材料?

2 个答案:

答案 0 :(得分:1)

改善Stehpen的答案......

假设您已在项目中添加了文档文件夹:

enter image description here

创建一个方法GetDocument,其中GetFilePath方法引用上面文件夹中的Folder / Filename。

    private void GetDocument()
    {     
        string fileName = Environment.CurrentDirectory.GetFilePath("Documents\\Title.xps");
        Debugger.Break();
        XpsDocument doc = new XpsDocument(fileName, FileAccess.Read);
        XDocViewer.Document = doc.GetFixedDocumentSequence();
    }

其中GetFilePath是一个如下所示的扩展方法:

public static class StringExtensions
    {
        public static string GetFilePath(
            this string EnvironmentCurrentDirectory, string FolderAndFileName)
        {
            //Split on path characters
            var CurrentDirectory = 
                EnvironmentCurrentDirectory
                .Split("\\".ToArray())
                .ToList();
            //Get rid of bin/debug (last two folders)
            var CurrentDirectoryNoBinDebugFolder = 
                CurrentDirectory
                .Take(CurrentDirectory.Count() - 2)
                .ToList();
            //Convert list above to array for Join
            var JoinableStringArray = 
                CurrentDirectoryNoBinDebugFolder.ToArray();
            //Join and add folder filename passed in
            var RejoinedString = 
                string.Join("\\", JoinableStringArray) + "\\";
            var final = RejoinedString + FolderAndFileName;
            return final;
        }
    }

答案 1 :(得分:0)

在XAML中添加文档查看器

并在cs文件中添加此代码:

string fileName = null;
string appPath= System.IO.Path.GetDirectoryName(Assembly.GetAssembly(typeof(DocumentWindow)).CodeBase);
fileName = appPath + @"\Documents\Help.xps";
fileName = fileName.Remove(0, 6);
XpsDocument doc = new XpsDocument(fileName, FileAccess.Read);
docView.Document = doc.GetFixedDocumentSequence();