在wpf中把xps文档打包到生成的exe内,在DocumentViewer显示这个xps文档,怎么从资源流Stream转换成XpsDocument
时间: 2024-02-01 08:16:22 浏览: 172
你可以通过使用`PackageStore`和`Package`类从资源流Stream中加载XpsDocument。以下是一个示例代码:
```csharp
using System.IO.Packaging;
using System.Windows.Xps.Packaging;
// 获取XPS文档的资源流
var resourceStream = Application.GetResourceStream(new Uri("pack://application:,,,/Resources/Document.xps")).Stream;
// 创建新的Package对象
var package = Package.Open(resourceStream);
// 将Package对象添加到PackageStore中
PackageStore.AddPackage(new Uri("memorystream://document.xps"), package);
// 使用XpsDocument类从Package对象中加载XPS文档
var xpsDocument = new XpsDocument(package, CompressionOption.Maximum, "memorystream://document.xps");
```
在上面的代码中,我们首先获取XPS文档的资源流,然后使用`Package`类创建一个新的Package对象。接下来,我们将Package对象添加到`PackageStore`中,以便可以从内存中访问它。最后,我们使用`XpsDocument`类从Package对象中加载XPS文档,该文档现在可以用于`DocumentViewer`控件的展示。
请注意,我们在`new XpsDocument()`构造函数中传递了一个自定义的URI,以便可以从`PackageStore`中访问XPS文档。这个URI可以是任何合法的URI,只要它是唯一的并且可以被`PackageStore`识别。
阅读全文