wkhtmltopdf Войдите в веб-приложение asp.net

Возникла проблема с wkhtmltopdf. Я использую его, чтобы делать снимки страниц в формате pdf на веб-сайте с именем пользователя и паролем. Когда запускается .exe, я получаю снимок страницы входа (запуск exe из моего собственного приложения ASP.NET).

Кто-нибудь знает, как я могу получить wkhtmltopdf для входа на сайт, чтобы он мог получить доступ к странице, которую ему нужно сделать снимок?

wkhtmltopdf устанавливается в каталог программных файлов на сервере и вызывается через :

public void HtmlToPdf(string website, string destinationFile)
    {
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.FileName = "wkhtmltopdf.exe";
        startInfo.Arguments = website + " " + destinationFile;
        Process.Start(startInfo);
    }

Спасибо! --Dan


ОТВЕТ

Мне не удалось заставить работать метод --cookie-jar (см. Комментарии), но я нашел другой способ программно войти в систему с именем пользователя / паролем в строке запроса.

Я передаю имя пользователя / pw как параметры в своей строке запроса и пытаюсь получить доступ к нужной странице с помощью wkhtml. Когда провайдер членства выгоняет меня на страницу входа, я получаю доступ к параметрам (которые хранятся в URL-адресе как параметр returnUrl) через код программной части и аутентифицирую себя. Простой response.redirect и bingo - у меня есть снимок PDF.

// Check to see if an outside program is trying
// to log in by passing creds in the querystring.
if (Request.QueryString["username"] != null) &&
    Request.QueryString["password"] != null))
{ 
    string user = Request.QueryString["username"];
    string pw   = Request.QueryString["password"];
    if (System.Web.Security.Membership.ValidateUser(user, pw))
    {
        // Create an authentication ticket for wkhtml session
        System.Web.Security.FormsAuthentication.SetAuthCookie(user, false);
        if (Request.QueryString["ReturnUrl"] != null)
        {
            Response.Redirect(Request.QueryString["ReturnUrl"]);
        }
    }
    else 
    {
        throw new Exception("You failed to log in.");
    }
}
8
задан ChrisW 26 February 2015 в 08:01
поделиться