wkHTMLtoPDF内存损坏和AccessViolationException

时间:2012-02-29 11:05:18

标签: c# pdf-generation access-violation wkhtmltopdf

我正在使用wkHTMLtoXSharp包装器来调用Windows 2008 R2上的wkHTMLtoPDF库。除了一个例外,它一切都很好用。我正在调用C#windows服务的包装器。在第一次运行时,转换完美无缺。在后续运行中,我得到内存损坏或AccessViolationException。修复它的唯一方法是终止运行DLL的进程。这似乎重置了潜在的问题。有任何线索如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我最终得到了一个与rggazarian类似的解决方案 来自here的wkhtmltopdf包 然后是这段代码

 public static void GenerateNewStylePDF(string domain, string url, string applicationPath)
    {
        var p = new Process();
        var startInfo = new ProcessStartInfo
                            {
                                FileName = applicationPath + "\\bin\\wkhtmltopdf\\wkhtmltopdf.exe",
                                Arguments = domain + url + " \"" + applicationPath + "export.pdf\"",
                                UseShellExecute = false,
                                RedirectStandardOutput = true,
                                RedirectStandardError = true
                            };
        p.StartInfo = startInfo;
        p.Start();
        var s = p.StandardOutput.ReadToEnd();
        var e = p.StandardError.ReadToEnd();
        p.WaitForExit();
    }

答案 1 :(得分:0)

当然Zubrowka。我尝试了每一个我熟悉的技巧来克服内存损坏而没有太多运气。

鉴于第一次运行完美无缺,我决定将PDF调用包装在可执行文件中,并通过ProcessStartInfo调用CommandLine可执行文件。这对我来说很好。我倾向于不引起同样多的上下文切换,但是,这两种弊端都是较少的。