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

Windows下NReco.PdfRenderer.PdfToImageConverter的ScaleTo参数异常

NReco.PdfToImageConverter Windows平台ScaleTo参数输出图像比例异常

问题表现

使用如下代码渲染经缩放处理的PDF转图像结果:

new PdfToImageConverter
{
    ScaleTo = 2200
}
.GenerateImage(
    "sample.pdf",
    1,
    ImageFormat.Png,
    "sample.pdf.png");

不同运行环境下输出结果存在差异:

  • Ubuntu环境:生成图像比例正确,符合预期
  • Windows环境:输出为带有大面积白色填充的正方形图像,比例完全错误,异常效果如下:
    Windows环境异常输出效果

问题最小复现样例程序:Test.NReco.ScaleTo

对照验证结果:Windows环境下直接使用poppler原生工具pdftoppm.exe执行以下命令时,可正常生成比例正确的缩放图像:

pdftoppm.exe -png -aa yes -aaVector yes  -f 1 -l 1 -singlefile  -scale-to 2200 sample.pdf sample.pdf

原生命令生成的正确效果如下:
原生工具输出正确效果

问题根因

该问题是NReco.PdfToImageConverter Windows版本的封装逻辑bug:组件在Windows环境下调用内置poppler库时,没有按预期传入单个-scale-to参数(该参数会自动保持页面原生长宽比,将长边缩放到指定值),而是错误同时传入了-scale-to-x和-scale-to-y两个参数,且两个参数都赋值为ScaleTo设定的2200,最终强制输出2200*2200的正方形画布,超出原页面比例的区域自动填充白色,就出现了截图里的白边问题。Linux环境下组件的参数传递逻辑无该错误,因此输出比例正常。

规避方案

  • 方案1:不使用ScaleTo属性。先读取目标PDF页面的原始宽高,计算将长边缩放到2200像素对应的DPI数值,赋值给组件的Dpi属性完成缩放,即可避开该参数传递bug,输出比例正确的图像。
  • 方案2:自行封装原生pdftoppm.exe调用逻辑。直接拼接验证通过的命令行参数执行,输出结果和Linux环境下的表现完全一致,不会出现白边问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:36:20