Itext 7.0.2图像的顺时针旋转

时间:2018-04-25 16:22:07

标签: java image itext itext7

图像元素(com.itextpdf.layout.element.Image)支持逆时针旋转。 是否可以顺时针旋转相同的图像?

func mapUserToApi(user User) api.User {
}

更新

这是使用逆时针90度的图像。 enter image description here

使用-90或逆时针270度的图像会发生这种情况。 enter image description here

2 个答案:

答案 0 :(得分:1)

怎么样:

img.setRotationAngle(Math.toRadians(270));

为什么你会通过为只能用一个函数完成的东西创建两个函数来使事情复杂化?

(后一句话受到Venkat Subramaniam今早在大印度开发者峰会上的主题演讲的影响。主题演讲的标题是:&#34;不要走开复杂性,跑步!&#34;)< / p>

<强>更新

在您的初步评论之后(我也尝试过270.由于我不理解的原因,图像已顺时针旋转,但它位于pdf页面底部。),我拍了这张照片:

enter image description here

在你的第二条评论中,你写道:你是对的!这意味着我必须再次设置位置,以便将图像显示到pdf页面中。如何移动图像,以便将其移动到页面底部之上?

这可能取决于您首先如何定位图像。你现在在用什么?您使用的是setFixedPosition()还是setRelativePosition()方法?或者您只是在不定义位置的情况下将图像添加到文档中?

答案 1 :(得分:0)

我发现问题是由于:

img.scaleAbsolute(525.58203, 737.0079)

该线用

缩放要装入容器的图像
width = 525.58203 and height = 737.0079.

以下代码块构成我需要的东西!

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));

float width = img.getXObject().getWidth();
float widthContainer = 525.58203;
float heightContainer = 737.0079;
float horizontalScaling = widthContainer / width;

img.scaleAbsolute(widthContainer, heightContainer);

img.setProperty(Property.ROTATION_ANGLE, Math.toRadians(270));
img.setFixedPosition(imageLlx, imageLly + width * horizontalScaling);

canvas.add(img);

结果如下: enter image description here