C# 操纵MVC4视图';s DOM并生成CSS格式的PDF
首先,当前状态:C# 操纵MVC4视图';s DOM并生成CSS格式的PDF,c#,asp.net,asp.net-mvc-3,asp.net-mvc-4,abcpdf,C#,Asp.net,Asp.net Mvc 3,Asp.net Mvc 4,Abcpdf,首先,当前状态: 我有一个带有razor引擎的MVC4网络应用程序(在线计算器) 应用程序有一个resultview,其中显示计算结果 我有能力使用ABCPDF 8.1 要操作DOM,我使用HtmlAgilityPack 目标是:在ResultController中,获取当前视图html,操作其DOM(尤其是删除导航元素)并生成完全格式化的pdf 以下是有效的方法: 从URL创建完全css样式的pdf var document = new Doc(); document.AddImageU
- 我有一个带有razor引擎的MVC4网络应用程序(在线计算器)
- 应用程序有一个resultview,其中显示计算结果
- 我有能力使用ABCPDF 8.1
- 要操作DOM,我使用HtmlAgilityPack
var document = new Doc();
document.AddImageUrl("www.whatever.com");
return File(doc.GetData(), "application/pdf", "abc.pdf");
从带有操纵DOM的视图html创建pdf,而不使用特定的CSS3格式
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");
}
因此,我可以创建一个pdf格式的html站点,也可以创建一个pdf格式的非样式html文件
AddImageUrl使用css
AddImageHtml不使用css
我会为每一种方法和解决方案感到高兴
//编辑:
我有一个快速解决这个问题的方法。而不是@Styles.Render css relative with
@Styles.Render("~/Content/css")
我绝对是针对样式表的
@Styles.Render("http://localhost:53406/Content/Site.css")
但可能还有其他解决方案。因为这是MVC,所有内容都可以通过URL控制,所以我建议将文档作为URL而不是图像加载
theDoc.AddImageUrl("http://www.google.com/")
这样,ABCpdf将按照您看到的方式加载页面。除非存在控制视图的脚本和其他东西,否则您需要为此配置文档。经过一些研究,我认为问题是:如何从包含html的字符串(不显示视图)在mvc4 razor中呈现视图。没错。但我想操纵网站DOM。我想从HTML页面生成一个结果PDF,但没有与网站相关的东西,如版权、导航等。另一种方法是复制视图、自定义模板并从URL将HTML打印为pdf。但目前,我没有找到一种方法,可以通过绝对URL访问视图,而不在浏览器中显示它。我想我应该开始另一个关于这个问题的问题。