【问题标题】:HTML to PDF conversion using WkHtmlToXSharp Caching / Buffering Issue使用 WkHtmlToXSharp 缓存/缓冲问题的 HTML 到 PDF 转换
【发布时间】:2013-10-30 23:29:47
【问题描述】:

我想将 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;

【问题讨论】:

  • 发现:如果我在本地服务器中回收应用程序池,它会正确出现。但我在共享托管服务器中没有选项。我怎样才能务实地做到这一点?这样做安全吗?

标签: c# html pdf wkhtmltopdf


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2023-03-02
    • 2021-01-14
    • 2012-07-17
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    相关资源
    最近更新 更多