gpt4 book ai didi

php - FPDF - 放置前确定 MultiCell 的高度?

转载 作者:可可西里 更新时间:2023-11-01 12:50:41 25 4
gpt4 key购买 nike

基本问题:是否可以在将 MultiCell 放入文档之前确定它的高度?

原因:我的任务是创建一个 PDF 版本的表单。此表单允许文本输入,结果长度可变。一个人我什么都不输入,另一个人可能会写几段。 “The Powers That Be”不希望这段文字在页面之间中断。

目前,在放置每个 block 后,我会检查页面上的位置,如果接近末尾,我会创建一个新页面。

if($this->getY() >= 250) {
$this->AddPage('P');
}

在大多数情况下,这是可行的。但是也有一些鬼鬼祟祟的人进来,比如说 249,然后有大量的文字。在放置 block 以查看它是否真正适合页面之前确定 block 的高度似乎更有意义。

肯定有办法做到这一点,但谷歌搜索并没有被证明很有帮助。

编辑澄清:PDF 是在提交表单后生成的。不是事件的、可编辑的 PDF 表单...

最佳答案

为这个问题赢得了风滚草徽章。 :( 无论如何,如果有人遇到同样的问题,我想我会用我所做的来回答。我怀疑这是最有效的方法,但它完成了工作。

首先,我创建了两个 FPDF 对象;一个永远不会得到输出的临时文件和最终用户将看到的最终完整的 pdf。

我在两个对象中都得到了我当前的 Y 坐标。然后,我使用 Cell() 或 MultiCell()(对于这种形式,通常是两者的组合)将数据 block 放入临时对象中,然后检查新的 Y 坐标。然后我可以做数学来确定 block 的高度。 -注意,如果 block 跨页中断,数学会变得有点奇怪。请记住将您的顶部和底部边距考虑在内。

现在我知道了 block 的高度,我可以获取目标对象的当前 Y 坐标,从页面的总高度(减去底部边距)中减去它以获得我的可用空间。如果 block 适合,则放置它,如果不适合,则添加一个页面并将其放在顶部。

对每个 block 重复。

我看到的唯一警告是,如果任何单个 block 都比整个页面长,但对于这种形式,这种情况永远不会发生。 (著名的遗言...)

关于php - FPDF - 放置前确定 MultiCell 的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21415102/

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