1

我想将 HTML 文件转换为 PDF 文件,我使用的是“wkhtmltopdf.exe”。然后我们将此应用程序移至共享托管服务器。该服务器不允许运行 .exe 文件,因此我必须使用 WkHtmlToXSharp.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;
4

1 回答 1

1

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

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

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

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

于 2013-11-01T01:05:48.263 回答