2

我正在使用 wkhtmltopdf 从给定的 HTML 创建 PDF。基本上我们有一些基于图形/图表的报告,所以我们使用 C# 代码创建 HTML,然后使用 WKHTMLTOPDF 创建 PDF。它工作正常,但昨天它停止创建 PDF。我尝试在没有任何错误或消息的情况下调试和处理作品。只是我们没有得到 PDF 作为输出。我尝试从命令行运行和使​​用 Wkhtmltopdf.exe,它确实创建了具有预期所有详细信息的 PDF。

我的代码是

public static bool HTMLtoPDF(string HTMLPath, string PDFPath, PageOrientation orientation)
{
    using (System.Diagnostics.Process proc = new System.Diagnostics.Process())
    {
        string dir = Path.GetDirectoryName(Assembly.GetAssembly(typeof(Vikasumit.VSCommon)).Location) + "\\wkhtmltopdf\\";

        proc.StartInfo.WorkingDirectory = dir;
        proc.StartInfo.RedirectStandardOutput = true;
        proc.StartInfo.RedirectStandardError = true;
        proc.StartInfo.CreateNoWindow = true;
        proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        proc.StartInfo.UseShellExecute = false;
        proc.StartInfo.FileName = dir + "wkhtmltopdf.exe";
        if (orientation == PageOrientation.Landscape)
        {
            proc.StartInfo.Arguments = " --page-width 11in --page-height 8.5in --margin-left 0.5cm --margin-right 0 --margin-top 1.25cm --margin-bottom 0 " + HTMLPath + "  " + PDFPath;
        }
        else
        {
            proc.StartInfo.Arguments = " --page-width 8.5in --page-height 11in --margin-left 0.5cm --margin-right 0 --margin-top 1.25cm --margin-bottom 0 " + HTMLPath + "  " + PDFPath;
        }
        proc.Start();
        proc.WaitForExit();
        string result = proc.StandardOutput.ReadToEnd();
        proc.Close();
        proc.Dispose();
    }
    return false;
}

确实这很好用,此代码适用于只有一页或两页的 PDF,但此报告有 800 页 [大约 1.2MB HTML 文件和来自命令行的输出文件大约 2.3MB。]

知道这里可能出了什么问题吗?分配给任务的内存是有限的还是什么?谢谢。

4

1 回答 1

1

我使用 Rotativa nuget 组件将 wkhtmltopdf 可执行文件包装在我的 Web 应用程序中。我不保存到文件,而是用它来为客户下载 pdf...

1)他们确实建议添加忽略加载错误开关(不确定它涵盖的内容)--load-error-handling ignore

2)由于您写入磁盘,并且仅发生在大文件上,因此是否存在磁盘空间问题?

于 2013-10-23T17:04:59.497 回答