0

我正在使用 C# 编写一个 Web 服务NReco.PdfConverterwkhtml它将网页转换为 PDF 文件。

网页(在 SharePoint 上)需要授权,并且还包含用户需要填写的表单,因此 Web 服务不能简单地访问该页面的 URL 并下载它。

JavaScript 和 CSS 文件对于正确呈现表单也很重要,包括来自 SharePoint 的数十个 JS 文件和样式表。

到目前为止,我最好的想法是:

  • 当用户单击“生成 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(包括复选框的状态、表单内的文本等)的想法?

这是非常复杂的事情吗?有人知道另一种解决方案吗?

4

1 回答 1

1

您可以使用适当的 wkhtmltopdf 选项传递授权 cookie(或标头),例如(如果使用 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 );
于 2016-11-08T09:47:52.227 回答