7

我正忙于一个需要大量 pdf 文件的项目。因为他们都需要公司的设计,所以我使用带有徽标/水印的背景图像。

如果我只有一页,一切都很好,但是当有多个页面时,背景只在第一页。

$pdf->Image('bg/background.jpg', 0, 0, 210, 297, '', '', '', false, 0, '', false, false, 0);
        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->setPageMark();
$pdf->SetAutoPageBreak(true);
$pdf->writeHTML($bodyText, true, true, true, true, '');
$pdf->lastPage();
$pdf->Output('doc.pdf', 'I');

所以我的 $bodyText 超过 1 页...

有没有解决方案让每个页面都有背景?

谢谢

沃特

4

2 回答 2

21

您可以使用自定义标头函数扩展 TCPDF 类,并将图像添加到标头,使用TCPDF::Image. 在TCPDF 示例中有一个关于如何执行此操作的示例

从例子:

// Extend the TCPDF class to create custom Header and Footer
class MYPDF extends TCPDF {
    //Page header
    public function Header() {
        // get the current page break margin
        $bMargin = $this->getBreakMargin();
        // get current auto-page-break mode
        $auto_page_break = $this->AutoPageBreak;
        // disable auto-page-break
        $this->SetAutoPageBreak(false, 0);
        // set bacground image
        $img_file = K_PATH_IMAGES.'image_demo.jpg';
        $this->Image($img_file, 0, 0, 210, 297, '', '', '', false, 300, '', false, false, 0);
        // restore auto-page-break status
        $this->SetAutoPageBreak($auto_page_break, $bMargin);
        // set the starting point for the page content
        $this->setPageMark();
    }
}

并使用MYPDF而不是TCPDF像使用TCPDF. 我唯一不知道 PDF 正文是否可以与标题重叠,但我认为如果您明确指定边距和标题大小,它可以。

让我知道这个是否奏效。

于 2012-07-07T14:45:39.133 回答
0

Mathe 的回答效果很好。

正如 Jasmines 要求为每个 MYPDF 实例使用不同的图像,我们可以在自定义标题之前有一个函数:

var $image_name;

    public function SetImagePath($image_name)
    {
        $this->image_path =  K_PATH_IMAGES.$image_name;
    }

然后在我们使用 MYPDF 之后,我们可以编写:

$pdf->setImagePath($imageName)

并且,自定义标题略有变化。

$this->Image($this->image_path, 0, 0, 210, 297, '', '', '', false, 300, '', false, false, 0);
于 2018-08-07T07:05:38.667 回答