在fPDF / tfPDF中创建编号页组

时间:2019-09-12 05:42:40

标签: php fpdf

我使用的是this,它可以帮助我创建不同的页面组。我有两个主要问题。首先,我正在使用PHP 7.3,并且我不想使用旧版本的PHP,因为我还有其他正在使用PHP 7.3的代码。第一个问题出现在第33行文件- pagegroup.php

$n = sizeof($this->PageGroups) + 1;

我遇到错误

  

sizeof():参数必须是实现Countable的数组或对象

我尝试用以下代码更改此行

if (empty($this->PageGroups)) {
    $n = 1;
} else {
    $n = count($this->PageGroups)+1;
}

有人可以确认我的工作正常吗,因为我的第二个问题是当我输入此代码时:

require 'lib/pagegroup.php';

class MYPDF extends PDF_PageGroup {
    function Header() {
        $this->Cell(0, 6, 'Page '.$this->GroupPageNo().'/'.$this->PageGroupAlias(), 0, 0, 'C');
    }

    for ($i = 0; $i < 2; $i++) {

    $pdf->StartPageGroup();
    $pdf->AddPage();

    // some other code ...
    }
}

GroupPageNo 运作良好,但是 PageGroupAlias 返回{nb1},对于组页面2,它返回{nb2}。因此,我最终得到了1/{nb1}1/{nb2},例如,最终结果应该是1/11/1

1 个答案:

答案 0 :(得分:0)

我设法使其在PHP 7.3下工作。这是我在方法 _beginpage 中的工作代码,我更改了此行:

$n = sizeof($this->PageGroups)+1;

带有这些行:

if (empty($this->PageGroups)) {
    $n = 1;
} else {
    $n = count($this->PageGroups) + 1;
}

最重要的一点是,必须将字体系列设置为 Arial ,否则它将无法正常工作并显示{nb2}。所以应该是这样的。

require 'lib/pagegroup.php';

class MYPDF extends PDF_PageGroup {
    function Header() {
        $this->AddFont('DejaVuSans', '', 'DejaVuSans.ttf', true);
        $this->SetFont('Arial', '', 10);
        $this->Cell(0, 6, 'Page '.$this->GroupPageNo().'/'.$this->PageGroupAlias(), 0, 0, 'C');
        // change the font to the one you want to use in my case DajaVu
        $this->SetFont('DejaVuSans', '', 16);
    }

    for ($i = 0; $i < 2; $i++) {

    $pdf->StartPageGroup();
    $pdf->AddPage();

    // some other code ...
    }
}