You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework 4.5.2使用OpenHtmlToPdf加载wkhtmltox.dll失败求助

问题分析与解决方案

问题背景

基于.NET Framework v4.5.2和OpenHtmlToPdf包开发的发票PDF生成程序,在客户端运行时抛出异常,Base64解码后核心错误为:Failed to load C:\Users...\AppData\Local\Temp\OpenHtmlToPdf\1.11.0.0_32\wkhtmltox.dll。已尝试关闭反恶意软件程序、替换新的dll文件,但问题仍未解决。

排查与解决方向

1. 平台架构不匹配

OpenHtmlToPdf依赖的wkhtmltox.dll分32位和64位版本,若项目设置为Any CPU,在64位系统中可能尝试加载64位dll,但临时目录中解压的是32位版本,导致加载失败。

  • 解决方案:明确设置项目目标平台为x86或x64,确保与使用的wkhtmltox.dll版本一致。

2. 手动指定dll路径

绕过OpenHtmlToPdf自动解压到临时目录的逻辑,将wkhtmltox.dll直接放置在程序执行目录下,通过代码指定路径:

var pdfGenerator = OpenHtmlToPdf.Pdf.From(html)
                          .UsingEngine(@"[你的程序目录]\wkhtmltox.dll");
var content = pdfGenerator.Content();

3. 临时目录权限问题

客户端用户对C:\Users\[用户名]\AppData\Local\Temp\OpenHtmlToPdf目录可能没有读写权限,导致dll解压不完整或无法加载。

  • 解决方案:手动删除该临时目录后重新运行程序,让OpenHtmlToPdf重新解压文件;或给该目录添加当前用户的读写权限。

4. 版本兼容性问题

.NET Framework 4.5.2与OpenHtmlToPdf 1.11.0.0版本可能存在兼容性冲突,尝试升级OpenHtmlToPdf到适配4.5.2的最新稳定版本,或降级到经过验证的兼容旧版本。

5. 依赖库缺失

wkhtmltox.dll需要对应版本的VC++ Redistributable运行库支持,若客户端未安装,会导致dll加载失败。

  • 解决方案:在客户端安装匹配架构(32/64位)的VC++ Redistributable运行时。

代码优化建议

原代码中文件写入部分可简化,using块会自动释放流资源,无需手动调用stream.Close():

// 替换原文件写入逻辑
File.WriteAllBytes(pdfFilePath, content.ToArray());

// 或保留using块但移除冗余代码
using (FileStream stream = File.Open(pdfFilePath, FileMode.OpenOrCreate, FileAccess.Write))
{
    var bytes = content.ToArray();
    stream.Write(bytes, 0, bytes.Length);
}

内容的提问来源于stack exchange,提问作者Riza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 07:36:08