获取页面的整个HTML + CSS + JS,并将其发送到web服务
本文关键字:服务 web JS CSS HTML 获取 | 更新日期: 2023-09-27 18:17:03
我正在用c#编写一个web服务,使用NReco.PdfConverter
和wkhtml
将网页转换为PDF文件。
web页面(在SharePoint上)需要授权,并且还包含用户需要填写的表单,因此web服务不能简单地访问该页面的URL并下载它。
JavaScript和CSS文件对于正确呈现表单也很重要,包括来自SharePoint的许多JS文件和样式表。
到目前为止,我最好的想法是:
-
当用户点击"Generate PDF"时,JavaScript会将整个当前页面转换为一个字符串(内联添加CSS文件和JS文件);
-
POST
的字符串到webservice使用$.ajax()
-
使用
NReco.PdfConverter
,将该字符串转换为PDF并将其保存到文件中是很简单的:var converter = new HtmlToPdfConverter { Margins = new PageMargins { Top = 0, Bottom = 0, Left = 0, Right = 0 }, CustomWkHtmlArgs = "--print-media-type" }; converter.GeneratePdf(htmlContent);
如何在浏览器中生成单页HTML(包括复选框的状态、表单中的文本等)?
是非常复杂的东西吗?有人知道另一种解决方案吗?
您可以使用适当的wkhtmltopdf选项传递授权cookie(或header),例如(如果使用WebForms身份验证):
var pdfGen = new HtmlToPdfConverter();
pdfGen.CustomWkHtmlArgs = String.Format(" --cookie {0} {1} ",
FormsAuthentication.FormsCookieName,
Request.Cookies[FormsAuthentication.FormsCookieName] );
pdfGen.GeneratePdfFromFile("your_sharepoint_web_page_url", null, "output.pdf");
——
基本授权:
pdfGen.CustomWkHtmlArgs = String.Format(" --username {0} --password {1}", username, pwd );