使用WkHtmlToXSharp缓存/缓冲问题进行HTML到PDF转换

时间:2013-10-30 23:29:47

标签: c# html pdf wkhtmltopdf

我想将HTML文件转换为PDF文件,而我使用的是“wkhtmltopdf.exe”。 然后我们将此应用程序移动到共享托管服务器。这个服务器,不允许运行.exe文件,所以我必须使用WkHtmlToXSharp.dll [上面的exe包装]。

它的工作正常,但问题是它在某处缓存输出,所以每次我创建一个新的PDF,它总是给出第一个。

我调用.Dispose()并将转换器设置为null但没有用。

但是在certian时间之后,它会带来新的PDF,这意味着它会在某处缓存或缓冲字节数据。

以下是我的代码。每次我传递一个新的html文件[htmlFullPath],其中包含不同的图像。

IHtmlToPdfConverter converter = new MultiplexingConverter();

converter.ObjectSettings.Page = htmlFullPath;

converter.ObjectSettings.Web.EnablePlugins = true;
converter.ObjectSettings.Web.EnableJavascript = true;
converter.ObjectSettings.Web.Background = true;
converter.ObjectSettings.Web.LoadImages = true;
converter.ObjectSettings.Load.LoadErrorHandling = LoadErrorHandlingType.ignore;

converter.GlobalSettings.Orientation = (PdfOrientation)Enum.Parse(typeof(PdfOrientation), orientation);
if (!string.IsNullOrEmpty(pageSize))
    converter.GlobalSettings.Size.PageSize = (PdfPageSize)Enum.Parse(typeof(PdfPageSize), pageSize);

converter.GlobalSettings.Margin.Top = "0cm";
converter.GlobalSettings.Margin.Bottom = "0cm";
converter.GlobalSettings.Margin.Left = "0cm";
converter.GlobalSettings.Margin.Right = "0cm";

Byte[] bufferPDF = converter.Convert();

System.IO.File.WriteAllBytes(pdfUrl, bufferPDF);

converter.Dispose();
converter = null;

1 个答案:

答案 0 :(得分:1)

正如我在问题中提到的那样“每次我传递一个新的html文件[htmlFullPath],其中包含不同的图像”。

每个HTML的图像不同,但图像名称相同。

我已经用时间戳重命名了图像,一切正常。

这意味着具有相同名称的图像会产生真正的问题,它可能是MultiplexingConverter的缓冲问题或IIS中的某些设置。我稍后会调查。