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

更新xhtmlrenderer库后ITextUserAgent构造函数不匹配问题解决

解决ITextUserAgent构造函数参数不匹配问题

更新xhtmlrenderer库后,父类ITextUserAgent的构造函数新增了dotsPerPixel参数,导致子类FileResolvingUserAgent的构造调用报错,以下是几种解决方式:

1. 给子类构造函数新增参数传递

如果需要根据不同场景自定义像素密度,直接给子类构造函数加上dotsPerPixel参数,传递给父类即可:

public FileResolvingUserAgent(final ITextOutputDevice outputDevice, final int dotsPerPixel, final Map<String, Supplier<InputStream>> fileResolvers) {
    super(outputDevice, dotsPerPixel);
    this.fileResolvers = fileResolvers;
}

后续创建FileResolvingUserAgent实例时,按需传入对应的像素密度值。

2. 使用默认值简化调用

如果不需要自定义,直接传入通用的默认值即可,常见选项:

  • 96:大多数屏幕的默认DPI,适合屏幕渲染场景
  • 300:打印文档常用的高DPI,保证打印清晰度

示例代码(以96为例):

public FileResolvingUserAgent(final ITextOutputDevice outputDevice, final Map<String, Supplier<InputStream>> fileResolvers) {
    super(outputDevice, 96);
    this.fileResolvers = fileResolvers;
}

也可以参考父类的配置读取逻辑,从框架配置中获取值,保持和框架默认行为一致:

public FileResolvingUserAgent(final ITextOutputDevice outputDevice, final Map<String, Supplier<InputStream>> fileResolvers) {
    super(outputDevice, Configuration.valueAsInt("xr.dots-per-pixel", 96));
    this.fileResolvers = fileResolvers;
}

关于dotsPerPixel的说明

这个参数控制HTML内容渲染时的像素密度:

  • 值越高,渲染出的文字、图片边缘越清晰,文件体积也会相应增大
  • 如果是生成屏幕显示的内容,用96足够;如果是打印或高清导出,建议用300及以上
  • 部分输出设备可能提供自身的DPI信息,也可以从ITextOutputDevice中尝试获取对应属性来动态设置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:57:25