Zend PDF:计算旋转后的坐标
Posted
技术标签:
【中文标题】Zend PDF:计算旋转后的坐标【英文标题】:Zend PDF: calculating coordinates after rotation 【发布时间】:2016-01-07 16:06:35 【问题描述】:没有涉及太多细节 - 我从网络工具获取参数 (x1,x2,y1,y2,a,b,α),我需要使用包含绿色的 Zend_PDF 库生成 PDF 文档图像在精确坐标上正确旋转和定位。
现在,让我感到困惑的是 Zend 不允许旋转元素,而是旋转纸张。所以,我认为轮换需要像这样完成
$page->rotate($x1 + ($x2 - $x1) / 2, $y1 + ($y2 - $y1) / 2, - deg2rad($rotation));
因为我们希望图像的中心作为旋转点,并且我们将其反向旋转,这样生成的图像才会得到正确的旋转。
我遇到麻烦的棘手部分是绘制它。通过简单的调用
$page->drawImage($image, $x1, $y1, $x2, $y2);
我得到了图表上显示的结果 - 结果图像也需要翻译,因为 (x1,y1) 和 (x2,y2) 不再是精确坐标,但我不确定如何计算它们?有什么想法吗?
【问题讨论】:
是 (x1, y1) 和 (x2, y2) 坐标在您的rotate
和drawImage
通话中是否相同?还是您的图像只是绿色矩形,在这种情况下drawImage
的值应该完全不同...
是的,它们是一样的。 $image 是一个绿色矩形,这也是正确的。我意识到 drawImage 调用得到了错误的坐标,但我不确定如何计算正确的坐标。
【参考方案1】:
OP 在评论中确认他对 (x1,y1) 和 (X2,y2 使用了相同的值)在他的rotate
和他的drawImage
电话中。不过,从他的草图中可以很明显地看出,后者调用的坐标必须不同。
幸运的是,我们从绿色矩形的内接方式知道从 (x1,y1) 到 (X2,y2),它与该矩形具有相同的中心点。此外,我们还有绿色矩形的尺寸 a 和 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);
【讨论】:
伙伴,感谢您的回复!解决方案几乎是完美的 - X 坐标是完美的,但 Y 仍需要向下平移一点(在常规未旋转坐标系中)。您可能知道为什么以及如何翻译它吗?简单地改变 drawImage 中的 y1 和 y2 会扭曲生成的图像,因为旋转系统中的 Y 轴是原始系统中 X 和 Y 的平移。 您能否分享输入值和生成的 PDF 以供分析 Y 仍需要稍微翻译进行分析? 据说...@Relja 只需更改 drawImage 中的 y1 和 y2 就会使结果图像倾斜 - 更改旋转和 drawImage 的 y 值。跨度> @Relja 现在可以按预期工作还是您还需要帮助?以上是关于Zend PDF:计算旋转后的坐标的主要内容,如果未能解决你的问题,请参考以下文章