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

Itext 7.0.2:Image元素支持逆时针旋转,能否实现顺时针旋转?

实现iText Image顺时针旋转的方法

当然可以对同一张图片实现顺时针旋转!iText的Image类的旋转参数其实支持正负值区分方向:

  • 正数代表逆时针旋转
  • 负数代表顺时针旋转

你可以通过两种直观的方式设置旋转:

  1. 使用角度值的setRotationDegrees()方法(无需弧度转换,更易理解)
  2. 使用弧度值的setRotation()方法

结合你的代码示例修改如下:

PdfPage page = iTextPdfDoc.getLastPage();
PdfCanvas pdfCanvas = new PdfCanvas(page.newContentStreamAfter(), page.getResources(), iTextPdfDoc);
Canvas canvas = new Canvas(pdfCanvas, iTextPdfDoc, page.getPageSize());
Image img = new Image(ImageDataFactory.create(path));
img.scaleAbsolute(525.58203, 737.0079);
img.setFixedPosition(30.785828, 34.66619);

// 示例1:顺时针旋转90度(推荐用角度值,语义更清晰)
img.setRotationDegrees(-90);

// 示例2:顺时针旋转90度(用弧度值,Math.PI/2对应90度)
// img.setRotation(-Math.PI/2);

canvas.add(img);

额外技巧:自定义旋转锚点

默认旋转是基于图片左下角(也就是你设置的固定位置锚点),如果想让图片以自身中心顺时针旋转,可以手动计算中心坐标后指定锚点:

// 计算图片中心坐标(固定位置X + 图片宽度/2,固定位置Y + 图片高度/2)
float centerX = 30.785828 + 525.58203 / 2;
float centerY = 34.66619 + 737.0079 / 2;
// 基于中心顺时针旋转90度
img.setRotationAngle(Math.toRadians(-90), centerX, centerY);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:25:14