iText7 PDF Optimizer之Image Quality Optimizer未按文档预期生效的技术求助
问题分析与解决方案
我一眼就发现你代码里的核心问题了——你配置好了带参数的ImageQualityOptimizer实例,但最终并没有把它添加到优化器中,而是新增了一个默认的、无任何压缩配置的实例,导致图像压缩完全没生效!
具体错误点
看这段代码:
// 你创建了配置好参数的tiff_optimizer,但之后没用到它 ImageQualityOptimizer tiff_optimizer = new ImageQualityOptimizer(); tiff_optimizer.SetTiffProcessor(new BitmapCompressor(.05f, .05f)); // 这里你又新建了一个空的ImageQualityOptimizer,之前的配置等于白做 optimizer.AddOptimizationHandler(new ImageQualityOptimizer());
你花时间配置了tiff_optimizer的Tiff压缩参数,但最后添加到优化器的是一个全新的、默认的ImageQualityOptimizer实例,这个默认实例不会对图像做任何压缩处理,自然达不到官方演示的效果。
修正后的代码
把上述代码段修改为:
ImageQualityOptimizer tiff_optimizer = new ImageQualityOptimizer(); tiff_optimizer.SetTiffProcessor(new BitmapCompressor(.05f, .05f)); // 添加你配置好的实例,而不是新建空的 optimizer.AddOptimizationHandler(tiff_optimizer);
额外建议(可选)
如果你的PDF中包含JPEG等其他格式的图像,还需要为这些格式添加对应的压缩处理器,比如:
// 针对JPEG图像设置压缩参数(质量0.5,保留元数据) tiff_optimizer.SetJpegProcessor(new JpegCompressor(0.5f, true));
验证效果
修正后重新运行代码,查看生成的report.txt,应该会出现ImageQualityOptimizer相关的处理日志,类似:
[INFO] PdfOptimizer/ImageQualityOptimizer: Processed X images, reduced total size by Y bytes
这样就能和官方演示的效果一致啦!
内容的提问来源于stack exchange,提问作者Zeeshan
相关产品推荐
相关产品推荐

