我之前已经成功使用过 wkhtmltopdf,但现在我有一个场景是我需要在启动该过程时使用特定帐户。当我设置一个有效的用户名/密码时,标准输出流是空的,返回码是-1。一旦我注释掉用户名/密码,它就会按预期工作。
在 .Net 4、Win 7 64 位中对此进行测试。
class Program
{
static void Main(string[] args)
{
var wkhtmlDir = AppDomain.CurrentDomain.BaseDirectory;
var wkhtml = wkhtmlDir + @"\wkhtmltopdf.exe";
var info = new ProcessStartInfo(wkhtml);
info.CreateNoWindow = true;
info.RedirectStandardOutput = true;
info.RedirectStandardError = true;
info.RedirectStandardInput = true;
info.UseShellExecute = false;
info.WorkingDirectory = wkhtmlDir;
info.Arguments = "http://www.google.com -";
var securePassword = new SecureString();
var password = "mypassword";
foreach (var c in password)
{
securePassword.AppendChar(c);
}
//comment out next three lines, and it works!
info.UserName = "myuser";
info.Password = securePassword;
info.Domain = "mydomain";
using (var process = Process.Start(info))
{
var output = process.StandardOutput.ReadToEnd();
// wait or exit
process.WaitForExit(60000);
var returnCode = process.ExitCode;
}
}
如果我注释掉 info.UserName、Password、Domain,则输出有数据,否则如果我尝试使用凭据,则输出为空白且 returnCode 为-1。
希望其他人遇到这种情况,这似乎是一个常见的情况,我肯定错过了一些简单的东西......
谢谢你的帮助!!