gpt4 book ai didi

ruby-on-rails - Prawn PDF 线适合边界框

转载 作者:行者123 更新时间:2023-12-04 03:50:40 24 4
gpt4 key购买 nike

如果 xy 坐标大于框的高度,有没有办法调整 xy 坐标以适应 Prawn PDF 中的边界框?

我正在使用 gem 'signature-pad-rails' 来捕获签名,然后存储以下内容:

[{"lx":98,"ly":23,"mx":98,"my":22},{"lx":98,"ly":21,"mx":98,"my":23},{"lx":98,"ly":18,"mx":98,"my":21}, ... {"lx":405,"ly":68,"mx":403,"my":67},{"lx":406,"ly":69,"mx":405,"my":68}]

我有以下内容在我的 pdf 中显示签名:
bounding_box([0, cursor], width: 540, height: 100) do
stroke_bounds
@witness_signature.each do |e|
stroke { line [e["lx"], 100 - e["ly"]],
[e["mx"], 100 - e["my"] ] }
end
end

但是在某些情况下,签名会从页面上消失,不是中心,只是通常会胡乱运行。

最佳答案

你的问题很模糊,所以我猜你的意思。

重新调整坐标序列 (x[i], y[i]), i = 1..n适合给定大小的边界框 (width, height)与原产地 (0,0)和 Postscript 一样,首先决定是否保留原图的纵横比。安装到盒子上通常不会这样做。由于您可能不想扭曲签名,所以回答"is"。

将图像缩放为保持长宽比的框时,x 轴或 y 轴决定缩放因子,除非框恰好具有图像的纵横比。所以接下来是决定如何处理交替轴上的“额外空间”。例如。如果图像与边界框相比又高又薄,则额外的空间将在 x 轴上;如果又短又胖,那就是 y 轴。

假设在额外空间内将图像居中;这似乎适合签名。

然后这里是重新缩放点以适合框的伪代码:

x_min = y_min = +infty, x_max = y_max = -infty
for i in 1 to n
if x[i] < x_min, x_min = x[i]
if x[i] > x_max, x_max = x[i]
if y[i] < y_min, y_min = y[i]
if y[i] > y_max, y_max = y[i]
end for
dx = x_max - x_min
dy = y_max - y_min
x_scale = width / dx
y_scale = height / dy
if x_scale < y_scale then
// extra space is on the y-dimension
scale = x_scale
x_org = 0
y_org = 0.5 * (height - dy * scale) // equal top and bottom extra space
else
// extra space is on the x_dimension
scale = y_scale
x_org = 0.5 * (width - dx * scale) // equal left and right extra space
y_org = 0
end
for i in 1 to n
x[i] = x_org + scale * (x[i] - x_min)
y[i] = y_org + scale * (y[i] - y_min)
end

关于ruby-on-rails - Prawn PDF 线适合边界框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43534586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com