如何使用 XPSDocument 打开 WPF 应用程序中作为二进制资源包含的 XPS 文件?

发布于 2024-08-22 09:13:05 字数 734 浏览 14 评论 0原文

基本上,我已将 xps 文件嵌入到包含 XPSDocument Viewer 作为资源的 WPF 应用程序中。

加载应用程序时,我只希望文档查看器显示该嵌入资源。

public Page1()
{
  InitializeComponent();
  XpsDocument doc = new XpsDocument(SmartsysBrowser.Properties.Resources.test1, FileAccess.Read);
  docViewer.Document = doc.GetFixedDocumentSequence();
  docViewer.Focus();
}

但是这个命令没有通过要求

  XpsDocument doc = new XpsDocument(SmartsysBrowser.Properties.Resources.test1, FileAccess.Read);

我知道我需要输入 XPS 文档的文件路径,但由于它是作为资源嵌入的,该怎么办?

非常感谢大家。

背景: 我应该制作一个显示机密文档的应用程序,并且由于限制其副本的制作/打印/分发也很重要,因此我决定使用 ClickOnce WPF XBAP 应用程序。我的推理是,一旦我从网络服务器中删除应用程序,ClickOnce 应用程序的所有副本都会变得无用。此外,这似乎是保护机密文件最便宜、最可行的方法。请随时提出替代方案。我总是热衷于向你们所有人学习。

Basically I have embedded a xps file in a WPF application containing a XPSDocument Viewer as a resource.

On loading the application, I just want the document viewer to display that embedded resource.

public Page1()
{
  InitializeComponent();
  XpsDocument doc = new XpsDocument(SmartsysBrowser.Properties.Resources.test1, FileAccess.Read);
  docViewer.Document = doc.GetFixedDocumentSequence();
  docViewer.Focus();
}

however this command does not pass muster

  XpsDocument doc = new XpsDocument(SmartsysBrowser.Properties.Resources.test1, FileAccess.Read);

I do know that I need to type the filepath of the XPS document but since it is embedded as a resource, how to?

Thanks very much all.

Background:
I am supposed to make a application that will display a confidential document and since it is also important to restrict copies of it being made/printed/circulated, I have decided a ClickOnce WPF XBAP application is the way to go. My reasoning, all copies of a ClickOnce application can be rendered useless once I remove the application from the webserver. Furthermore, it seems to be the cheapest and most viable way to protect a confidential document. Please do feel free to suggest alternatives. I am always keen to learn from you all.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

强辩 2024-08-29 09:13:05

当您使用嵌入式资源(即非 WPF 资源)时,您可以使用 Assembly.GetManifestResourceStream 从资源名称中获取 Stream,然后使用静态 Package.Open 获取 Package 实例,然后您可以使用其他 XpsDocument接受 Package 作为参数的构造函数。

As you're using embedded resources (i.e. non-WPF resource), you could use Assembly.GetManifestResourceStream to get a Stream from your resource name, then use the static Package.Open to get a Package instance, then you can use the other XpsDocument constructor that accepts a Package as parameter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文