.NET 5 MVC项目中依赖注入引入的wkhtmltopdf如何配置参数
.NET 5 MVC 项目 Wkhtmltopdf 参数配置方案
你使用的是NuGet封装的免独立安装wkhtmltopdf包,无需在VS命令行执行全局命令,参数可直接在服务注册阶段或PDF生成代码中传入:
1. 全局参数配置(Startup.cs 服务注册阶段)
以常用的Rotativa.AspNetCore、Wkhtmltopdf.NetCore两类封装包为例:
- Rotativa.AspNetCore 配置示例:
services.AddRotativa(config => { // 基础格式配置 config.PageSize = Rotativa.AspNetCore.Options.Size.A4; config.PageOrientation = Rotativa.AspNetCore.Options.Orientation.Portrait; config.Margins.Top = 10; config.Margins.Bottom = 10; // 自定义命令行参数,官方文档的所有命令行参数可直接写在这里,多参数空格分隔 config.CustomSwitches = "--disable-smart-shrinking --encoding utf-8 --zoom 1"; }); // 配置wkhtmltopdf二进制文件路径,若你用的包自带运行文件,填写项目内对应相对路径即可 RotativaConfiguration.Setup(env.WebRootPath, "wkhtmltopdf");
- Wkhtmltopdf.NetCore 配置示例:
services.AddWkhtmltopdf("wkhtmltopdf文件相对路径", new Wkhtmltopdf.NetCore.Options.GlobalOptions { MarginTop = 10, MarginBottom = 10, EnableSmartShrinking = false, Encoding = "utf-8" });
2. 单PDF实例独立参数配置
如果部分PDF需要特殊配置,可在生成代码中单独传参,优先级高于全局配置:
public IActionResult ExportPdf() { var pdfResult = new ViewAsPdf("报表视图名", 视图模型) { PageSize = Rotativa.AspNetCore.Options.Size.Legal, // 单独指定当前PDF的页眉页脚等特殊参数 CustomSwitches = "--footer-center \"第[page]页/共[topage]页\" --footer-font-size 9" }; return pdfResult; }
常用参数说明
--disable-smart-shrinking:关闭智能缩放,解决内容显示过小错位问题--encoding utf-8:指定编码,解决中文乱码问题--zoom 1:固定缩放比例,适配不同分辨率下的显示效果
官方所有命令行参数都可以直接放入
CustomSwitches字段传入,不需要执行外部命令行操作。
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

