我想将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;
答案 0 :(得分:1)
正如我在问题中提到的那样“每次我传递一个新的html文件[htmlFullPath],其中包含不同的图像”。
每个HTML的图像不同,但图像名称相同。
我已经用时间戳重命名了图像,一切正常。
这意味着具有相同名称的图像会产生真正的问题,它可能是MultiplexingConverter的缓冲问题或IIS中的某些设置。我稍后会调查。