NReco HtmlToPdf生成PDF提示文件名或扩展名过长报错
NReco生成PDF报错「Cannot generate PDF: The filename or extension is too long」解决方案
该报错和你为
D:/PdfSample开放的Everyone权限完全无关:权限不足时NReco抛出的是访问拒绝类错误,不会触发路径长度相关的提示。
根本原因
两类路径长度突破Windows系统默认260字符的路径长度限制,是触发该报错的唯一原因:
- 你传入方法的最终PDF输出完整路径本身超出长度阈值
- NReco内部为输入的HTML内容自动生成的临时文件路径超出长度阈值
具体排查和修复操作
- 先在代码中打印最终传入
GeneratePdfFromFiles方法的path参数完整值,核对从盘符到.pdf后缀的全路径长度,精简路径结构:减少嵌套目录层级、缩短文件名中冗余的业务标识,确保全路径长度控制在200字符以内预留冗余空间。 - 检查
WkHtmlInput的传值方式:如果之前是直接把完整的HTML字符串(coverpage、正文内容)传给WkHtmlInput构造函数,NReco会自动在系统临时目录生成对应的输入文件,长HTML内容对应的临时文件路径极易突破长度限制。可改为先将封面HTML、正文HTML、页眉HTML分别写入你可控的短路径临时文件(比如直接存到D:/PdfSample/temp/目录下,用短随机字符串命名如tmp_cover.html),再将这些短文件路径传给对应的WkHtmlInput参数。 - 做最简路径验证:临时将输出路径改为最短测试值(比如
D:/test.pdf)运行代码,如果能成功生成PDF,即可确认原路径长度超限是问题根因。
内容的提问来源于stack exchange,提问作者Jeeva J
相关产品推荐
相关产品推荐

