我使用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文件和cmmand行的输出文件大约是2.3MB。]
知道这里可能出现什么问题吗?它是对任务的内存分配有限还是什么?感谢。
答案 0 :(得分:1)
我使用Rotativa nuget组件将wkhtmltopdf可执行文件包装在我的Web应用程序中。我不保存到文件,而是用它来下载客户端的pdf ...
1)他们建议添加忽略负载错误开关(不知道它涵盖了什么) --load-error-handling ignore
2)由于您写入磁盘,并且只发生在大文件上,是否存在磁盘空间问题?