FPDI,FPDF SetAutoPageBreak在中断后添加模板到页面

时间:2014-09-02 07:34:05

标签: php fpdf fpdi

我创建了一个表单,允许用户创建一个具有无限页数的pdf,我已经设置了SetAutoPageBreak,以便它继续到第二页但是我无法在分页后创建页面继续使用原始模板文件。基本代码如下所示。

require('fpdf.php');
require('fpdi.php');

$pdf = new FPDI('P','mm','A4');

    $pageCount = $pdf->setSourceFile("source_file.pdf");
    $tplIdx = $pdf->importPage(1);
    $pdf->AddPage();
    $pdf->useTemplate($tplIdx);
    $pdf->SetTextColor(63,76,89);
    $pdf->SetMargins(5,39,5,20);
    $pdf->SetAutoPageBreak(true,22); //page created doesn't have template attached
    $pdf->SetDrawColor(225,225,225);
    $pdf->SetFillColor(248,248,248);
    $pdf->SetLineWidth(1);
    $pdf->SetXY(82, 40);
    $pdf->MultiCell(165,5,$company.$block,0,L,false);
    $pdf->SetXY(19, 45);
    $pdf->MultiCell(165,5,$date.$block,0,L,false);
    $pdf->Output();

环顾四周,这个问题是我能找到的最接近的问题,但是我不确定它是否相关:FPDF/FPDI UseTemplate

由于

2 个答案:

答案 0 :(得分:1)

只需将导入的页面放在Header方法中:

class PDF extends FPDI
{
    protected $_tplIdx;

    public function Header()
    {
        if (null === $this->_tplIdx) {
            $this->_tplIdx = $this->importPage(1);
        }

        $this->useTemplate($this->_tplIdx);
    }
}

$pdf = new PDF('P','mm','A4');
$pdf->AddPage();
...

......一切都应该按预期工作。

答案 1 :(得分:1)

除了@JanSlabon的回答:(我没有必要的声誉才能发表评论,所以我将其张贴在这里,希望可以)

如果您只想在首页上使用特定模板,而在所有其他页面上使用其他模板,则可以按照以下步骤操作:

{
"name": "generic_master",
"properties": {
    "activities": [
        {
            "name": "Web1",
            "type": "WebActivity",
            "dependsOn": [],
            "policy": {
                "timeout": "7.00:00:00",
                "retry": 0,
                "retryIntervalInSeconds": 30,
                "secureOutput": false,
                "secureInput": false
            },
            "userProperties": [],
            "typeProperties": {
                "url": "https://jsonplaceholder.typicode.com/posts/1",
                "method": "GET"
            }
        },
        {
            "name": "ForEach1",
            "type": "ForEach",
            "dependsOn": [
                {
                    "activity": "Web1",
                    "dependencyConditions": [
                        "Succeeded"
                    ]
                }
            ],
            "userProperties": [],
            "typeProperties": {
                "items": {
                    "value": "@activity('Web1').output",
                    "type": "Expression"
                },
                "activities": [
                    {
                        "name": "Execute Pipeline1",
                        "type": "ExecutePipeline",
                        "dependsOn": [],
                        "userProperties": [],
                        "typeProperties": {
                            "pipeline": {
                                "referenceName": "generic_child",
                                "type": "PipelineReference"
                            },
                            "waitOnCompletion": true
                        }
                    }
                ]
            }
        }
    ],
    "annotations": []
}

我不知道@Searlee到底在寻找什么,但是也许可以帮助其他人。