如何将XPS文档流式传输到浏览器并将其嵌入网页?

5 asp.net xpsdocument binaryfiles stream

我正在寻找一些关于如何解决这个问题的建议.任何输入都表示赞赏!

目前,我有一个ASP.NET MVC应用程序.在客户端上,我有一个带有XPS文档ID的链接.当用户单击该链接时,它们将被带到包含该文档详细信息的页面.除了这些信息之外,我希望在同一页面中将此文档与此信息一起显示.

在服务器端,一旦我有了ID,我就可以从数据库中获取文件,序列化为字节数组.问题是,将序列化文档放入网页的最佳方法是什么?

我会非常喜欢不必将文档放入文件系统,然后将文件路径拼凑在一起.我希望能够将文档作为"application/vnd.ms-xpsdocument"的内容类型流式传输到浏览器.

我已经尝试使用Web控件来处理这个问题(无法写出二进制文件),考虑创建一个HTTP处理程序来执行此操作(不知道从哪里开始),并且通过其他几种方式来获取文档流式传输到浏览器.

此外,还存在如何将文档嵌入网页的问题.我使用EMBED标签吗?还是一个对象?或者我是否使用iframe并将源设置为指向文档的任何内容?

同样,我不希望解决方案陷入困境.我正在寻找关于如何解决这个问题的一些建议.而且,虽然这个问题是关于xps文档的,但它适用于流式传输要在浏览器中托管的二进制文件的任何应用程序(PDF等).


好的,至于在浏览器中显示一个词:Silverlight.那已经解决了.我仍然有一个问题,即找出从服务器发送到浏览器的最佳方法.


罢工.看起来Silverlight还不够先进,不足以显示XPS文档.我正在考虑iframe指向一个http处理程序... iframe工作.太糟糕了,它将整个东西扔到管道上.我想我总是可以剥掉第一页并发送那只小狗......


哇.不需要HTTP处理程序.MVC中的自定义ActionResult就是您所需要的.friggen真是太棒了?

Joe*_*orn 2

我认为最简单的方法是从详细信息页面提供文档作为链接 (target="_blank")。这有几个优点:

  • 除非用户要求,否则您不需要检索和流式传输整个文档。
  • 在我的系统上,至少 IE 已经注册为默认 XPS 查看器,因此通过为文档提供它自己的窗口,您可以避免如何嵌入它的整个问题。
  • 它使得为文档提供流式源变得简单:只需使用带有查询字符串参数 ID 的 HTTP 处理程序即可。

即使您不喜欢这个想法,也一定要使用 HTTP 处理程序来传输文档。做起来非常简单:当您在 Visual Studio 中创建一个新的 HTTP 处理程序时,它应该为您提供一个漂亮的页面,其中所有繁忙的工作都已完成。