使用Select.HtmlToPdf.NetCore.Blink转PDF失败:找不到Chromium二进制文件
解决Select.HtmlToPdf.NetCore.Blink无法找到Chromium二进制文件的问题
你遇到的核心问题是Blink渲染引擎依赖的Chromium二进制文件没被正确部署到IIS Express的运行目录——毕竟你的bin文件夹里只有Select.Html.dep,缺失完整的Chromium文件目录。下面给你几个实用的解决步骤:
1. 手动部署Chromium二进制文件
这个NuGet包安装后,Chromium的文件其实存放在你的NuGet缓存目录里。你可以按这个路径查找:你的解决方案目录\packages\Select.HtmlToPdf.NetCore.Blink.{具体版本号}\content\Chromium
把整个Chromium文件夹完整复制到项目的输出目录中(比如bin\Debug或bin\Release,取决于当前的编译配置),确保IIS Express能访问到这个目录。
2. 代码中手动指定Chromium路径
如果自动加载路径还是有问题,你可以在代码里明确指定Chromium的位置,避免程序找不到文件。修改后的代码示例如下:
// 获取当前应用程序的根目录 string chromiumPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Chromium"); // 实例化HTML转PDF转换器对象 var converter = new HtmlToPdf() { Options = { RenderingEngine = RenderingEngine.Blink, ChromiumBasePath = chromiumPath, // 手动指定Chromium所在路径 PdfPageSize = PdfPageSize.A4, PdfPageOrientation = PdfPageOrientation.Portrait, MarginTop = 20, MarginRight = 20, MarginBottom = 20, MarginLeft = 20, DisplayFooter = true } }; // 转换URL生成新的PDF文档 var doc = converter.ConvertUrl(url); // 保存PDF文档 byte[] response = doc.Save(); // 关闭PDF文档 doc.Close();
3. 配置项目文件的复制规则
有时候NuGet安装后,Chromium的文件不会自动设置为“复制到输出目录”。你可以把Chromium文件夹添加到项目中,选中文件夹内的所有文件,在属性窗口里把复制到输出目录设置为始终复制,这样每次编译都会自动同步文件到bin目录。
4. 验证IIS Express的权限
确保IIS Express运行的应用池账号对Chromium文件夹有读取权限。本地开发环境下一般用当前用户账号,权限通常没问题,但如果遇到权限报错,可以右键Chromium文件夹,给IIS_IUSRS或当前用户添加读取权限。
内容的提问来源于stack exchange,提问作者HasanG
相关产品推荐
相关产品推荐

