C# 使用WkHtmlToXSharp缓存/缓冲的HTML到PDF转换问题

C# 使用WkHtmlToXSharp缓存/缓冲的HTML到PDF转换问题,c#,html,pdf,wkhtmltopdf,C#,Html,Pdf,Wkhtmltopdf,我想将HTML文件转换为PDF文件,我使用的是“wkhtmltopdf.exe”。 然后,我们将此应用程序移动到共享托管服务器。此服务器不允许运行.exe文件,因此我必须使用wkhtmltoxharp.dll[上述exe的包装器] 它工作正常,但问题是它将输出缓存在某个地方,因此每次我创建新的PDF时,它总是给出第一个 我调用了.Dispose()并将转换器设置为null,但没有任何用处 但经过一定的时间后,它带来了新的PDF,这意味着它在某处缓存或缓冲字节数据 下面是我的代码。每次我传递一个包

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

它工作正常,但问题是它将输出缓存在某个地方,因此每次我创建新的PDF时,它总是给出第一个

我调用了.Dispose()并将转换器设置为null,但没有任何用处

但经过一定的时间后,它带来了新的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;

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

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

我已经重新命名的图像也与时间戳和所有工作良好


这意味着同名图像是真正的问题,它可能是MultiplexingConverter的缓冲问题或IIS中的某些设置。我将在稍后进行研究。

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

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

我已经重新命名的图像也与时间戳和所有工作良好


这意味着同名图像是真正的问题,它可能是MultiplexingConverter的缓冲问题或IIS中的某些设置。我稍后将对此进行调查。

调查结果:如果我在本地服务器中回收应用程序池,它将正确运行。但我在共享主机服务器中没有选择。我怎样才能务实地去做呢?这样做安全吗?调查结果:如果我在本地服务器中回收应用程序池,它就会正确地出来。但我在共享主机服务器中没有选择。我怎样才能务实地去做呢?这样做安全吗?