FPDF从文档导入所有页面

时间:2018-03-16 18:09:21

标签: php fpdf

我尝试制作水印脚本,如果我只在一页上使用pdf,那就很好用了。 但是当我尝试将它与多页pdf文档一起使用时,它只将水印放在第1页。其他页面不可见...抱歉我的英文不好。请帮我。 这是我的代码:

$fullPathToFile = "documents/myfile.pdf";

class PDF extends PDF_Rotate {

var $_tplIdx;

function Header() {
    global $fullPathToFile;

    //Put the watermark
    $this->Image('logo.PNG', 40, 100, 100, 0, 'PNG');
    $this->SetFont('Arial', 'B', 50);
    $this->SetTextColor(255, 192, 203);
    //$this->RotatedText(20, 230, 'Watermark text', 45);

    if (is_null($this->_tplIdx)) {

        $this->numPages = $this->setSourceFile($fullPathToFile);
        $this->_tplIdx = $this->importPage(1);
    }
    $this->useTemplate($this->_tplIdx, 0, 0, 200);


}

function RotatedText($x, $y, $txt, $angle) {
    //Text rotated around its origin
    $this->Rotate($angle, $x, $y);
    $this->Text($x, $y, $txt);
    $this->Rotate(0);
}

}


$pdf = new PDF();
$pdf->AddPage();
$pdf->Image('logo.PNG', 50, 120, 120, 0, 'PNG');

$pdf->Output();

2 个答案:

答案 0 :(得分:0)

这是解决方案!:

if($pdf->numPages>1) {
    for($i=2;$i<=$pdf->numPages;$i++) {
        //$pdf->endPage();
        $pdf->_tplIdx = $pdf->importPage($i);
        $pdf->AddPage();
    }
}

答案 1 :(得分:0)

您可以通过旧的解决方案来执行此操作,但是在这里我正在解释如何使用它。

    # Add 2 page
    $pdf->AddPage();  // it is required for all .
    $tplIdx2 = $pdf->importPage(2);
    $pdf->useTemplate($tplIdx2);
    $pdf->SetAutoPageBreak(true, 5);

在这里您必须注意,我正在添加将新页面添加到PDF的 $ pdf-> AddPage()代码。添加页面始终排在第一位。这是必需的。

$ pdf-> importPage(Page_number)将页面导入PDF的当前页面。

需要将任何页面导入当前PDF。我尝试了许多解决方案,但缺乏知识,无法使用IstvánMaróti的解决方案。