首先當前狀態:操縱MVC4視圖的DOM並生成CSS格式的PDF
- 我有一個MVC4 web應用(在線計算器)用剃刀引擎
- 應用程序有一個resultview這說明計算結果
- 我不得不使用ABCPDF 8.1
- 要操作DOM我使用HtmlAgilityPack的abbility
目標是:在ResultController中,獲取當前視圖html,操作其DOM(尤其是移除導航元素)並生成完全格式化的pdf。
以下幾點工作:
從URL
var document = new Doc();
document.AddImageUrl("www.whatever.com");
return File(doc.GetData(), "application/pdf", "abc.pdf");
創建一個完全的CSS樣式PDF沒有具體CSS3打印格式創建從操縱DOM一個觀點HTML中的PDF
using (StringWriter sw = new StringWriter())
{
// get html stream from view
var result = ViewEngines.Engines.FindView(ControllerContext, "WizardFirstStep", "_Layout");
var context = new ViewContext(ControllerContext, result.View, ViewData, TempData, sw);
result.View.Render(context, sw);
var html = sw.ToString();
// manipulate DOM with HtmlAgilityPack
var hdoc = new HtmlDocument();
hdoc.LoadHtml(html);
... manipulation
// create pdf and return FileContentResult
var doc = new Doc();
doc.AddImageHtml(hdoc.DocumentNode.InnerHtml);
return File(doc.GetData(), "application/pdf", "abc.pdf");
}
所以我可以創建一個樣式化的HTML網站作爲pdf,我可以創建一個操作非風格的HTML文件作爲PDF。
AddImageUrl使用CSS
AddImageHtml不使用CSS
我會很高興大約每方法和解決方案
//編輯:
我有一個快速的解決此問題的方法。相反@ Styles.Render的CSS相對與
@Styles.Render("~/Content/css")
我絕對地址樣式表
@Styles.Render("http://localhost:53406/Content/Site.css")
但也許還有其他的解決方案。
經過一番研究,我認爲問題是:如何從一個保存html的字符串(不顯示視圖)在mvc4剃鬚刀中渲染視圖。 – csteinmueller