代码之家  ›  专栏  ›  技术社区  ›  Relja

Zend PDF:旋转后计算坐标

  •  5
  • Relja  · 技术社区  · 9 年前

    不需要过多的细节-我正在从一个网络工具中获取参数(x1,x2,y1,y2,a,b,±),我需要使用Zend_PDF库生成一个PDF文档,该库包含在精确坐标上正确旋转和定位的绿色图像。

    enter image description here

    现在,让我困惑的是,Zend不允许元素旋转,而是旋转纸张。所以,我假设旋转需要这样做

    $page->rotate($x1 + ($x2 - $x1) / 2, $y1 + ($y2 - $y1) / 2, - deg2rad($rotation));

    因为我们希望图像的中心是旋转点,我们以相反的方向旋转它,这样得到的图像将得到正确的旋转。

    我遇到麻烦的棘手部分是画它。通过简单的呼叫

    $page->drawImage($image, $x1, $y1, $x2, $y2);

    我得到了图表上显示的结果-结果图像也需要翻译,因为(x1,y1)和(x2,y2)不再是精确的坐标,但我不确定如何计算它们?有什么想法吗?

    1 回复  |  直到 9 年前
        1
  •  2
  •   mkl    9 年前

    OP在评论中确认,他对( x1个 , y1年 )和( X2个 , 第2年 )在他的 rotate 和他的 drawImage 电话。不过,从他的草图中很明显,后一个调用的坐标必须不同。

    幸运的是,我们从绿色矩形内接在矩形中的方式得知( x1个 , y1年 )至( X2个 , 第2年 )它与矩形具有相同的中心点。此外,我们有尺寸 b 绿色矩形的。

    因此 drawImage(绘图图像) 参数必须更改为:

    $page->drawImage($image, $x1 + ($x2 - $x1) / 2 - $a / 2
                           , $y1 + ($y2 - $y1) / 2 - $b / 2
                           , $x1 + ($x2 - $x1) / 2 + $a / 2
                           , $y1 + ($y2 - $y1) / 2 + $b / 2);