WkHtmlToXSharp-System.AccessViolationException

WkHtmlToXSharp-System.AccessViolationException,html,pdf,wkhtmltopdf,Html,Pdf,Wkhtmltopdf,我在项目中使用WkHtmlToXSharp包装库从HTML生成PDF文件 我在不同的PC机上多次使用这个库,突然,我遇到了以下问题: System.AccessViolationException:尝试读取或写入受保护内存。这通常表示其他内存已损坏。 在wkhtmltoxharp.WkHtmlToPdfConverter.wkhtmltopdf\u convert(IntPtr converter)中 在wkhtmltoxharp.WkHtmlToPdfConverter.Convert处(字符

我在项目中使用WkHtmlToXSharp包装库从HTML生成PDF文件

我在不同的PC机上多次使用这个库,突然,我遇到了以下问题:

System.AccessViolationException:尝试读取或写入受保护内存。这通常表示其他内存已损坏。 在wkhtmltoxharp.WkHtmlToPdfConverter.wkhtmltopdf\u convert(IntPtr converter)中 在wkhtmltoxharp.WkHtmlToPdfConverter.Convert处(字符串inputtml) 在wkhtmltoxharp.WkHtmlToPdfConverter.Convert()处 在wkhtmltoxharp.MultiplexingConverter.b_8()处 ---内部异常堆栈跟踪的结束--- 在Sanford.Threading.DelegateQueue.EndInvoke处(IAsyncResult结果) 在Sanford.Threading.DelegateQueue.Invoke(委托方法,对象[]args) 在wkhtmltoxharp.MultiplexingConverter.Convert()中

这似乎是这个库的一个常见问题(我在网上找到了一些关于它的反馈,但是没有提供修复)。顺便说一句,在我的情况下,这是随机发生的。我在其他开发机器上没有遇到这个问题。我想知道是否有人能解决这个问题。我还想知道这是否是包装器库的问题,如果是WkHtmlToPDF库本身的问题


有什么建议吗?我也愿意使用另一个转换器,只要它是免费和稳定的,如果可能的话,不产生新的进程。它必须在所有Windows版本中都能正常稳定地工作,并能很好地进行转换(要转换的HTML是固定的-包含一些图片、表格和基本CSS)。

我建议另一种方法:直接使用wkhtmltopdf.exe,构建自己的包装器。如果您可以控制输入,并且知道如何更新它以及选项如何工作,那么它们就不是很复杂了。我从未在直接使用wkhtmltopdf(在Win7、WinServer2008R2、Ubuntu和CentOS上)时遇到过这个问题。不过,它们确实会为每次转换生成流程

例如,请查看关于wkhtmltopdf的文档。或者尝试下面未经测试的代码(您的真实代码将更加复杂,这只是一个演示/POC)


事实上,我最终就是这样做的。我相信这是正确的答案,至少就WkHtmlToPdf/WkHtmlToXSharp@Nenotlep,直接使用wkhtmltopdf.exe是绝对容易的,但是对于大量的同时请求,我会使我的系统处于暂停状态。有没有办法在后台调用此执行?@user3163213如果您有此问题,我将构建一个队列系统。这意味着,如果您直接通过浏览器向用户发送PDF,您必须找到其他方式(附加到电子邮件、通过电子邮件发送链接等)。@Nenotlep,请回复我stackmanoz@yahoo.in. 我将在电子邮件中描述我的问题。
var pi = new ProcessStartInfo(@"c:\wkhtmltopdf\wkhtmltopdf.exe");
pi.CreateNoWindow = true;
pi.UseShellExecute = false;
pi.WorkingDirectory = @"c:\wkhtmltopdf\";
pi.Arguments = "http://www.google.com gogl.pdf";

using (var process = Process.Start(pi))
{
    process.WaitForExit(99999);
    Debug.WriteLine(process.ExitCode);
}