【问题标题】:wkHTMLtoPDF memory corruption and AccessViolationExceptionwkHTMLtoPDF 内存损坏和 AccessViolationException
【发布时间】:2012-03-18 20:47:32
【问题描述】:

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

【问题讨论】:

  • 调试你没有编写的代码中的堆损坏,用你不熟悉的语言编写是非常不愉快的。特别是考虑到代码库的大小。如果您无法从图书馆作者那里获得帮助,请放弃它并尝试其他方法。
  • 感谢您的建议。我正在从图书馆作者那里获得帮助。
  • 我遇到了同样的问题。你能帮忙吗?

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


【解决方案1】:

我也有同样的问题。我最终得到了与 rggazarian 类似的解决方案,使用 wkhtmltopdf 包来自here 然后这段代码

 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();
    }

【讨论】:

    【解决方案2】:

    当然是祖布罗卡。我尝试了所有我熟悉的技巧来克服内存损坏,但运气不佳。

    鉴于第一次运行完美无缺,我决定将 PDF 调用包装在一个可执行文件中,并通过 ProcessStartInfo 调用 CommandLine 可执行文件。这对我来说很好。我不希望引起太多的上下文切换,但是,它是两害相权取其轻。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      相关资源
      最近更新 更多