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

.NET 7.0使用Rotativa导出HTML View为PDF时遇RotativaPath空值异常求助

解决Rotativa.AspNetCore的ArgumentNullException (RotativaPath为null)问题

这个错误是因为Rotativa无法找到wkhtmltopdf的执行文件路径,需要手动配置路径,以下是具体解决步骤:

1. 确认wkhtmltopdf的安装路径

根据你的操作系统,找到wkhtmltopdf的可执行文件位置:

  • Windows默认路径:C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe
  • Linux/macOS路径可能为:/usr/local/bin/wkhtmltopdf

2. 全局配置Rotativa路径(推荐)

在项目的Program.cs中添加Rotativa的配置代码,确保在依赖注入容器中注册时指定路径:

using Rotativa.AspNetCore;

var builder = WebApplication.CreateBuilder(args);

// 注册MVC服务
builder.Services.AddControllersWithViews();

// 配置Rotativa路径
builder.Services.AddRotativa(options =>
{
    // 替换为你的wkhtmltopdf实际路径
    options.RotativaPath = @"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe";
});

var app = builder.Build();

// 其他中间件配置...

app.Run();

3. 局部配置(仅在生成PDF时指定)

如果不想全局配置,也可以在Print方法中直接给ViewAsPdf实例指定路径:

public ActionResult Print()
{
    // 建议直接在Print方法中初始化数据,避免依赖_index字段的生命周期问题
    var customerList = new List<Customer>()
    {
        new Customer {CustomerId = 1, FirstName = "Jimi", LastName = "Hendrix" },
        new Customer {CustomerId = 2, FirstName = "Mitch", LastName = "Mitchell"}
    };

    var pdf = new ViewAsPdf("Index", customerList)
    {
        // 替换为你的wkhtmltopdf实际路径
        RotativaPath = @"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe"
    };
    return pdf;
}

额外注意事项

  • 确保使用的wkhtmltopdf版本与Rotativa.AspNetCore兼容,Rotativa.AspNetCore 1.3.2 beta推荐搭配wkhtmltopdf 0.12.6版本,新版本可能存在兼容性问题。
  • 部署到服务器时,需确保服务器已安装wkhtmltopdf,且应用程序拥有访问该路径的权限。
  • 避免依赖控制器字段传递数据(如你的_index),因为控制器实例的生命周期是请求级别的,Print请求不会复用Index请求的_index值,建议在Print方法内重新获取或初始化数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:55:02