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