0

私はC#でWebページをPDFファイルに変換するWebサービスを書いていNReco.PdfConverterますwkhtml

Web ページ (SharePoint 上の) は承認を必要とし、ユーザーが入力する必要があるフォームも含まれているため、Web サービスはそのページの URL にアクセスしてダウンロードするだけでは不十分です。

JavaScript と CSS ファイルも、SharePoint の多数の JS ファイルとスタイルシートを含む、フォームを正しくレンダリングするために重要です。

これまでのところ、私の最良のアイデアは次のとおりです。

  • ユーザーが [Generate PDF] をクリックすると、JavaScript は現在のページ全体を単一の文字列に変換します (CSS ファイルと JS ファイルをインラインで追加します)。

  • POSTを使用してその文字列を Web サービスに送信し$.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 に答える