fpdf - 返回上一页

Nat*_*ran 3 php pdf fpdf

我使用fpdf生成pdf发票.

一些发票包含许多项目,详细信息需要进入第二页.但是,我需要在第一页上显示总数和其他详细信息.

现在,如果我可以添加这样的新页面:$ pdf-> AddPage();

但是,无论在此声明之后,这都会将所有内容放入第二页.

似乎没有办法为write或cell方法指定页面.

渲染和计算有点复杂,因此不希望存储到临时数组并在完全渲染第一页后显示.

谢谢.

小智 5

我有一个非常相似的问题,我继续将该函数添加到该类:

function SetPage($num) {
    $this->page = $num;
}
Run Code Online (Sandbox Code Playgroud)

这确实是你所期望的.但是,当您尝试返回下一页时,您需要显式设置它或添加到Cell()功能.这是添加页面的地方:

    if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak())
Run Code Online (Sandbox Code Playgroud)

这将检查AcceptPageBreak,显然,如果我们留在页面上,页面的高度是否小于我们最终的位置.我所做的是在这里添加一个条件来检查下面是否有另一页.如果有,而不是添加新页面,我继续前进,只是将我的Y设置为我的边距,并使用上述功能访问该页面.因此:

if ($this->page < count($this->pages)) {
        $this->SetPage(($this->page)+1);
        $this->y = .5;
    }
Run Code Online (Sandbox Code Playgroud)

如果你对使用FPDF感到不舒服,这可能不适合你,但是我解决这个问题后的实现实际上是脚本很容易导航并为简单的改进留下了很大的空间.请注意,您可以添加一个可以调用的变量,而不是在上面检查另一个页面,这个变量会暂时告诉脚本,而不是添加页面,只需跳转到下一个.


小智 4

if(!empty($this->replace) && !empty($this->replacement)){
    $this->pages[$n]=str_replace($this->replace,$this->replacement,$this->pages[$n]);
}
Run Code Online (Sandbox Code Playgroud)

我将此代码添加到 /Page 内容行 2851 下的 _putpages() 中的 fpdf 类中

将上面添加到代码后的示例:

$pdf->replace = array("{paid_msg}","{balance}");
$pdf->replacement = array("Paid","0.00");
Run Code Online (Sandbox Code Playgroud)

它可以是字符串或数组。