2012-02-08 31 views
1

我有我的JSON结果返回的流通过我的GetTestReport行动PDF:如何显示由流返回的pdf(在JsonResult中)?

return this.Json(pdfInBytes); 

在我看来:

$.post('@Url.Action("GetTestReport", "Reports")', function(data) { 
    // What have i put here? 
}); 

我怎样才能显示PDF在整个页面,或在特定的div?

+0

看看这个[http://andreasgal.com/2011/06/15/pdf-js/](http://andreasgal.com/2011/06/15/pdf-js/) – 2012-02-08 18:47:21

回答

3

PDF不能嵌入到文档中,它本身就是一个文档,并且您不能将其放入JSON结果中,您会将其URL放在JSON中。

然后,你仍然可以把它放在一个iFrame(它将是源src)。或者你做window.open('you_pdf_url.pdf');将它显示在一个新标签中。

+0

但是有了这个,我必须在物理上创建文件的权利?我无法做到这一点,所以我必须创建一个流或以字节为单位转换为传递给浏览器,就像我们用txt文件做的那样,例如,但FileResult不是用JsonResult。那么,你说的是我们不能用JsonResult来做到这一点,只能用FileResult来做到这一点? – 2012-02-08 19:07:20

+0

不,您仍然可以传递将动态创建它的URL。 – Nabab 2012-02-08 19:10:35

+0

我的pdf不存在物理上,我有它的字节,所以,网址将指向哪里? – 2012-02-08 19:15:15

0

Nabab是正确的,您无法将PDF转换为JSON。

你的行动“GetTestReport”应该用FileStreamResult返回PDF本身:

return new FileStreamResult(pdfMemoryStream, "application/pdf"); 

你不指定控制器的名称,所以我们假设这就是所谓的“家”。这意味着如果您浏览到/ Home/GetTestReport,您的pdf将被提供给客户端并显示在浏览器中。

该网址是你需要的!您可以在ViewModel中使用它或使用JSON将其发送到浏览器。