【问题标题】:Image rotation via itext pdf library通过itext pdf库进行图像旋转
【发布时间】:2015-05-28 05:50:48
【问题描述】:

我无法通过在 java 程序中使用 itext pdf 库从中心或任何固定点旋转图像。当我旋转图像时,它的 x 和 y 坐标会改变。请在这方面帮助我。

   Image pdfImage=Image.getInstance("assets/product.png");
    pdfImage.setAlignment(Element.ALIGN_CENTER);
    pdfImage.setRotationDegrees(30);
    document.add(pdfImage);
   pdfImage.setRotationDegrees(140);
    document.add(pdfImage);

在上面的代码中,我没有可以判断旋转点的相同点。

提前致谢

【问题讨论】:

    标签: java pdf-generation itext


    【解决方案1】:

    当您使用setRotationDegrees() 方法设置旋转时,图像会使用图像的左下角作为其旋转点进行旋转。如果您想要另一个旋转点,则需要使用低级功能来更改 CTM。请参阅 PdfContentByte class 中的不同 addImage() 方法了解更多信息:

    • addImage(Image image, AffineTransform transform) 添加了一个 Image,并使用 com.itextpdf.awt.geom.AffineTransform 类定义的给定转换。
    • addImage(Image image, float a, float b, float c, float d, float e, float f) 使用由值定义的 CTM 添加 Image abcdef,它们是 3 x 3 矩阵的元素。例如。 ef 定义翻译。

    有关坐标系和变换矩阵的更多详细信息,请阅读The ABC of PDF with iText。这本书还没有完成,但它是免费的,你需要的部分已经在那里了。

    如果你想自己定义旋转,你需要了解PDF中两个非常重要的概念:

    • 坐标系的原点由 MediaBox 定义。如果媒体框是这样定义的[0 0 595 842](这是一个A4页面)并且没有裁剪框,​​那么坐标系的原点将是您页面的左下角。右上角的坐标为 (x = 595; y = 842)。
    • 在 PDF 中,您不能旋转对象。相反,您旋转坐标系。当您将对象添加到旋转坐标系时,对象看起来好像是旋转的。

    所有这些都在 ISO-32000-1 和我开始编写的 ABC 书中进行了解释。

    【讨论】:

    • 我仔细研究了您的参考资料。现在我可以从左下角旋转我的图像,但旋转必须是 90 度的倍数才能获得正确的图像,如果我改变旋转度,我的图像也会改变。
    • 我仍然无法从中心旋转图像。
    • 这只是数学问题!你在高中时肯定学过代数和解析几何吗?如果没有:很遗憾,我今天没有时间做你的数学老师。
    • 你有任何答案@roushankumarSingh.how 从中心实现 roattion。
    • @abh22ishek 为什么要劫持一个旧问题来提出一个新问题?添加一个额外的标签,例如计算几何,以便引起数学专家的注意,因为这不是 PDF 问题:这是一个数学问题。
    猜你喜欢
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    相关资源
    最近更新 更多