pdf-generation - wkhtmltopdf 和基于表单的身份验证

标签 pdf-generation wkhtmltopdf

我有一个使用基于表单的身份验证的应用程序。我正在尝试复制应用程序中的页面并使用 wkhtmltopdf 将其保存为 PDF。

wkhtmltopdf 已安装并且工作正常。我可以在应用程序中成功调用它以生成另一个网站的 PDF,无需身份验证(即 bbc.co.uk)。

我无法将用户名/密码传递给应用程序以生成所需页面的副本。相反,我得到了登录屏幕的 PDF。

客户端和服务器都是 Windows(分别是 7 和 2008)。我正在使用命令:

wkhtmltopdf.exe --post userid=xxx --post pwd=yyy --ignore-load-errors http://url.com/blah/blah/测试.pdf

其中 xxx 是我的用户名,yyy 是我的密码。我已经浏览了登录页面的源代码,并且表单字段的 id 是 userid 和 pwd,所以我相信我在命令行中的 post 参数是正确的。

彻底谷歌搜索后,我可以看到提到 --cookie-jar 参数,但还没有设法计算出它的用法,或者即使它会有所帮助。

谢谢

邓肯

最佳答案

如果您使用 ASP.NET 表单例份验证,您可以通过一系列 --cookie 将当前用户的身份验证 cookie 转发到 wkhtmltopdf。参数。这是假设经过身份验证的使用(您可以从中获取身份验证 cookie)触发 PDF 打印输出。

注意:这不是从 .NET 应用程序启动 wkhtmltopdf.exe 的完整工作代码,而只是如何将 cookie 传递给 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);

关于pdf-generation - wkhtmltopdf 和基于表单的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7019603/

相关文章:

android - 从哪里开始 : Creating a PDF in my Android application

python - 通过 API 检索 GoogleDoc 并生成用自己的文本替换的 PDF

ruby-on-rails - 在heroku上实现邪恶的pdf问题

ruby-on-rails - 如何修复 'Error while loading shared libraries: libpng12.so.0'(在 dokku 上)

docker - pdf2htmlEX无法打开或读取文件

java - 带 session 的 headless Chrome PDF 打印

php - 打印 HTML 设计内容的最佳方式?

ruby-on-rails - PDFKit 给我一个 406,并呈现一个空的 pdf

ruby-on-rails - 我在哪里可以找到 pdfkit 或 wkhtmltopdf 日志?

php - 使用 wkhtmltopdf 设置横向