Возникла проблема с 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.");
}
}