2011-08-11 29 views
3

私はフォームベースの認証を使用するアプリケーションを持っています。私は、アプリケーション内のページのコピーを取って、wkhtmltopdfを使ってPDFに保存しようとしています。wkhtmltopdfとフォームベースの認証

wkhtmltopdfがインストールされ、正常に動作します。アプリケーション内から正常に呼び出すことで、認証なしで別のウェブサイトのPDFを生成することができます(例:bbc.co.uk)。

希望のページのコピーを生成するために、ユーザー名/パスワードをアプリケーションに渡すことができません。代わりにサインオン画面のPDFが表示されます。

クライアントとサーバーの両方がWindowsです(それぞれ7と2008)。私は、コマンドを使用しています:xxxは自分のユーザー名とyyyは私である

wkhtmltopdf.exe --postユーザーID = xxxは--post PWD = YYY --ignore-負荷エラーhttp://url.com/blah/blah/ test.pdfという

をパスワード。私はログオンページのソースを調べています。フォームフィールドのIDはuseridとpwdですので、コマンドラインにpostパラメータが正しいと思います。

完全にグーグルした後、私は--cookie-jarパラメータへの言及を見ることができますが、その使い方を管理していないか、助けても役に立ちます。

ダンカン

答えて

1

おかげでこの問題が解決されました。私はバージョン0.9.9を使用していて、動作させることができませんでした。バージョン0.10.0 rc2に移行するとすぐにうまくいきました。

誰かが同じことを試みているなら、私が使ったコード行は上記の通りです。私は--cookie-jarパラメータは必要ありませんでした。

+1

はあなたのための '--postユーザー= xxxは--post PW = yyy'の仕事をしましたか?このようなポストパラメータを指定しようとすると、「不明なスイッチ-o」というメッセージが表示されます(WindowsではなくLinuxで試してみました) – acme

+0

作業コードを投稿できますか?私はここで同じことをしようとしています... – VinnyG

+0

私はヘルプテキストです。 – Chords

2

ASP.NETフォーム認証を使用している場合は、一連の--cookie argsを使用して、現在のユーザーの認証Cookieをwkhtmltopdfに転送できます。これは認証された使用(あなたが認証クッキーを得ることができる)がPDFプリントアウトを引き起こしていると仮定しています。

注:これは、.NETアプリケーションからwkhtmltopdf.exeを起動するための完全な動作コードではなく、クッキーをwkhtmltopdfに渡す方法の単なる例です。参照、.NETからwkhtmltopdf.exeを起動する例について

how to pass html as a string using wkhtmltopdf?

ProcessStartInfo psi = new ProcessStartInfo(); 
psi.FileName = "wkhtmltopdf.exe"; 

string cookieArgs = ""; 
var cookies = HttpContext.Current.Request.Cookies; 

if (cookies != null) 
{ 
    var sb = new System.Text.StringBuilder(); 

    // you probably only need the ".ASPXFORMSAUTH" 
    // and "ASP.NET_SessionId" cookies 
    // but I pass everything just in case 
    foreach (string key in cookies.AllKeys) 
    { 
     string value = cookies[key].Value; 
     sb.AppendFormat("--cookie {0} {1} ", key, value);      
    } 
    cookieArgs = sb.ToString(); 
} 

psi.Arguments = urlToPrint + " -q " + cookieArgs + " -"; 
Process.Start(psi); 
関連する問題