获取整个 HTML + CSS + 页面的 JS,并将其发送到 Web 服务
Get the entire HTML + CSS + JS of the page, and send it to a web service
我正在使用 NReco.PdfConverter
和 wkhtml
在 C# 中编写 Web 服务,将网页转换为 PDF 文件。
网页(在 SharePoint 上)需要授权并且还包含用户需要填写的表单,因此 Web 服务不能简单地访问该页面的 URL 并下载它。
JavaScript 和 CSS 文件对于正确呈现表单也很重要,包括来自 SharePoint 的数十个 JS 文件和样式表。
到目前为止,我最好的想法是:
当用户点击"Generate PDF"时,JavaScript会将整个当前页面转换为一个字符串(内联附加CSS文件和JS文件);
POST
使用 $.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");
---更新---
对于 HTTP 基本身份验证:
pdfGen.CustomWkHtmlArgs = String.Format(" --username {0} --password {1}", username, pwd );
我正在使用 NReco.PdfConverter
和 wkhtml
在 C# 中编写 Web 服务,将网页转换为 PDF 文件。
网页(在 SharePoint 上)需要授权并且还包含用户需要填写的表单,因此 Web 服务不能简单地访问该页面的 URL 并下载它。
JavaScript 和 CSS 文件对于正确呈现表单也很重要,包括来自 SharePoint 的数十个 JS 文件和样式表。
到目前为止,我最好的想法是:
当用户点击"Generate PDF"时,JavaScript会将整个当前页面转换为一个字符串(内联附加CSS文件和JS文件);
POST
使用$.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");
---更新---
对于 HTTP 基本身份验证:
pdfGen.CustomWkHtmlArgs = String.Format(" --username {0} --password {1}", username, pwd );