System.Diagnostics.Process OutputDataReceived和wkhtmltopdf的问题

时间:2013-08-08 17:05:38

标签: c# asp.net encoding wkhtmltopdf

我正在使用wkhtmltopdf生成PDF文档。解决方案 here工作正常,直到它开始使用更大的数据集超时。现在我使用解决方案here来阻止Process超时。我几乎复制/粘贴了它,并添加了以下内容:

public byte[] WKHtmlToPdf(string url)
{
    int timeout = 60000;
    int returnCode = 0;
    byte[] file = new byte[932768];

    using (Process process = new Process())
    {
        // etc etc, same code as the solution from above

        // ...
        if (process.WaitForExit(timeout) &&
            outputWaitHandle.WaitOne(timeout) &&
            errorWaitHandle.WaitOne(timeout))
        {
            // Process completed. Check process.ExitCode here.
            file = Encoding.UTF8.GetBytes(output.ToString());
            returnCode = process.ExitCode;
        }
        // ...
    }

    return returnCode == 0 ? file : null;
}

(此方法返回的对象将写入System.Web.HttpContext.Current.Response

结果比之前更好,因为它没有超时,但PDF文件中的每个页面都是空白的。我试过明确告诉wkhtmltopdf使用utf-8,但这也不起作用。页面数量是正确的 - 如果我手动运行该工具并使用相同的URL转换为PDF,我会得到相同数量的页面。

这里有什么问题?

1 个答案:

答案 0 :(得分:0)

如果有人遇到与我相同的问题,他们可能想尝试解决方案here。为我工作完美。