Apache FOP动态设置输出图片DPI的常规实现方式咨询
结论
你当前使用FOUserAgent.setTargetResolution(dpi)设置输出PNG DPI的方式,就是Apache FOP 2.3版本实现单任务动态设置DPI的官方常规方案,完全符合你的需求,不需要更换实现方式。
补充说明
- FopFactory实例是全局共享的,配置文件
fop_config.xml里的参数是全局默认值,如果你需要给不同生成任务设置不同的DPI,必须为每个任务创建独立的FOUserAgent实例,通过setTargetResolution方法覆盖全局默认的分辨率配置,正好适配你每张图片动态设置DPI的需求。 - 其他DPI设置方式的适用场景:
- 如果所有生成任务的DPI固定,可以直接在
fop_config.xml中添加全局配置<target-resolution>固定DPI值</target-resolution>,不需要在代码里动态设置 - 如果你是需要调整输入素材图片的渲染分辨率,才需要修改其他FO属性,和你当前的输出PNG DPI设置需求无关
- 如果所有生成任务的DPI固定,可以直接在
- 你的示例代码里有个小笔误:
getFopFactory()方法最后返回的变量名是factory,但你实际定义的实例变量是fopFactory,运行时会报错,注意修正即可。
内容的提问来源于stack exchange,提问作者evgenyorlov1
相关产品推荐
相关产品推荐

