*總結到底。顯示在飛行模式對話框上創建的pdf
我在SO和其他站點上閱讀了很多很多像我這樣的問題,試圖解決我的問題,但是我找不到解決問題的最後一點。
說明:
我有一個表(的jqGrid)其中,I從一個數據庫顯示一些數據,如下所示:
+------+-----+
| Name | Age |
+------------+
| test | 1 |
+------+-----+
和我具有與信息生成PDF的按鈕當前選擇的行。
要做到這一點,當用戶點擊按鈕「PDF」我創建一個隱藏的輸入形式並將其值設置:
//create a form
$("<form>").attr({
"id" : "invform",
"method" : "post",
"action" : "Home/generatePdf"
});
然後,我創建了輸入和隱藏它們,並提交形式服務器...
//Id of selected row
var selectedRowId = $("#grid").jqGrid('getGridParam', 'selrow');
//Value of column Name of selected row
var cellValue = $("#grid").jqGrid('getCell', selectedRowId, 'name');
$("#invform")
.append($("<input>").attr({"name" : "Name", "type" : "text", "value" : cellValue}))
//hide all inputs
$("#invform input").attr({"hidden" : "true"});
//submit form
$("#invform").submit();
的形式,然後發送到我的控制器,並填充OBJ的所有數據:
public FileStreamResult generatePdf(Model obj)
{
PDF myPdf = <code for generating the pdf>;
byte[] byteArr = myPdf.toByteArray();
MemoryStream ms = new MemoryStream();
ms.Write(byteArr, 0, byteArr.Length);
HttpContext.Response.AddHeader("content-disposition",
"inline; filename=" + randomName + ".pdf"); //random name is just a string based on time etc
return new FileStreamResult(ms, "application/pdf");
}
這一切都工作完美。
問題:
後,我打電話提交()的形式,該控制器被稱爲並返回並顯示在PDF同一選項卡上。我需要將此表單顯示在我擁有的模式窗口上。
HTML:
<div id="pdfdiv" style="display:none">
<iframe id="pdfframe" style="width:100%; height:100%;">
</iframe>
</div>
JS:
$("#pdfdiv").dialog({
height: ($(window).height() * 0.95),
width: ($(window).width() * 0.45),
position: {
my: "center bottom",
at: "center top",
of: $(window)
}
});
我不知道該穿什麼 「源」 iframe的屬性,使PDF在那裏顯示,而不是在sabe瀏覽器選項卡。 我覺得這是很容易做的事情,我缺少一些東西,因爲我是網絡開發新手。
摘要:我從控制器返回的PDF顯示在同一個瀏覽器選項卡上,我需要讓它出現在jquery對話框中,但我不知道如何放置iframe src屬性,因爲pdf是在表單被提交。
在什麼瀏覽器?或瀏覽器? – 2014-09-18 21:07:34
鉻。 Pdf在一個內存流中。 – victor 2014-09-18 22:35:21
查看http://www.cloudformatter.com/CSS2Pdf中的JS,可以在新窗口中打開選項,下載並在實際文檔中嵌入PDF。還有一些瀏覽器嗅探發生,只給你什麼你可以有取決於瀏覽器。 – 2014-09-18 23:21:12