wkHTMLtoPDF 内存损坏和 AccessViolationException

3

我正在使用wkHTMLtoXSharp包装器在Windows 2008 R2上调用wkHTMLtoPDF库。除了一个问题,一切都运行良好。我是从C# Windows服务中调用包装器。第一次运行转换无瑕疵地完成。在随后的运行中,我遇到了内存损坏或AccessViolationException。唯一的解决方法是杀死运行DLL的进程。这似乎可以重置潜在的问题。有什么线索可以解决这个问题吗?


在你不熟悉的语言中编写的代码中调试堆损坏问题非常痛苦,尤其是考虑到代码库的规模。如果无法从库作者那里获得帮助,则应放弃并尝试其他方法。 - Hans Passant
感谢您的建议。我正在向图书馆作者寻求帮助。 - rghazarian
我遇到了同样的问题。你能帮忙吗? - Żubrówka
2个回答

1

我曾经遇到过同样的问题。最终我采用了与rggazarian类似的解决方案,使用这里的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();
    }

0

肯定是 Zubrowka。我尝试了我熟悉的每一个技巧来克服内存损坏,但收效甚微。

考虑到第一次运行完美无缺,我决定将 PDF 调用包装在可执行文件中,并通过 ProcessStartInfo 调用 CommandLine 可执行文件。这对我来说完全没问题。虽然我更喜欢不引起太多上下文切换,但这是两害相权取其轻。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接