使用iText 2.1.7旋转并缩放PDF页面时遇缩放失效问题求助
解决PDF旋转+等比缩放的问题
你遇到的问题是因为没有正确组合旋转变换和缩放变换的矩阵参数,只修改a和d会破坏旋转的变换逻辑,导致页面变形或额外旋转。
原理说明
addTemplate的六个参数对应PDF变换矩阵的元素:
[a c e] [b d f] [0 0 1]
你原来的代码(0.0F, 1.0F, -1.0F, 0.0F, currentPageSize.getHeight(), 0.0F)是实现逆时针旋转90度的变换矩阵。要叠加等比缩放,需要把旋转相关的所有参数(a、b、c、d)都乘以缩放比例,同时平移参数e也要对应缩放,否则页面会偏移到画布外。
修改后的代码
将所有变换参数乘以0.28的缩放因子,代码如下:
float scale = 0.28F; cb.addTemplate(page, 0.0F * scale, 1.0F * scale, -1.0F * scale, 0.0F * scale, currentPageSize.getHeight() * scale, 0.0F);
为什么这样改?
- 等比缩放需要保证x、y方向的缩放比例一致,所以
a、b、c、d都要乘以同一个scale值,避免页面拉伸变形 - 平移参数
e(原代码中的currentPageSize.getHeight())是旋转后调整页面位置的偏移量,缩放后也要同步乘以scale,确保页面显示在正确位置
内容的提问来源于stack exchange,提问作者jay26
相关产品推荐
相关产品推荐

