2012-02-08 30 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將其發送到瀏覽器。