2

我正在尝试使用 CakePdf 和 TcPdf 引擎设置带有背景图像的 pdf 生成。我已经设法使用以下设置将图像放到背景上:

// set background image
$img_file = APP . 'webroot/img/BC_Letterhead.jpg';
$TCPDF->Image($img_file, 0, 0, 210, 297, '', '', '', false, 300, '', false, false, 0);

问题是图像似乎覆盖了整个背景。它似乎距页面右侧约 1 英寸,距页面底部约 2 英寸。我使用的图像尺寸正确(我仔细检查了它)

这可能是保证金问题或类似问题吗?

谢谢

4

3 回答 3

9

关键是删除页眉和页脚,将边距设置为零并将自动分页符设置为 false。

例如,要打印覆盖整个 A4 页面的图像:

// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// remove default header/footer
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);

// set margins
$pdf->SetMargins(0, 0, 0, true);

// set auto page breaks false
$pdf->SetAutoPageBreak(false, 0);

// add a page
$pdf->AddPage('P', 'A4');

// Display image on full page
$pdf->Image('background.jpg', 0, 0, 210, 297, 'JPG', '', '', true, 200, '', false, false, 0, false, false, true);

//Close and output PDF document
$pdf->Output('page.pdf', 'I');

文档中还有一个使用自定义标头的示例:

http://www.tcpdf.org/examples/example_051.phps

于 2015-05-02T15:23:34.873 回答
2

这对我有用。

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 background image
    $img_file = K_PATH_IMAGES.'pozadina.jpg';
    $this->Image($img_file, 0, 0, 98, 59, '', '', '', 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();
}
}
$pdf = new MYPDF('L', 'mm', array(59,98));
$pdf->Output('filename.pdf', 'D'); //To force download
于 2013-03-04T08:41:02.400 回答
1

我最终使用以下代码或多或少地让它工作。唯一的问题是我在底部还有大约 1 厘米没有背景图像覆盖它,宽度很好。

        // -- SET BACKGROUND IMAGE ------------------------------>
        $TCPDF->SetFooterMargin(0);

        // get the current page break margin
        $bMargin = $TCPDF->getBreakMargin();

        // get current auto-page-break mode
        $auto_page_break = $TCPDF->getAutoPageBreak();

        // disable auto-page-break
        $TCPDF->SetAutoPageBreak(true, 0);

        // set background image
        $img_file = APP . 'webroot/img/BC_Letterhead.jpg';
        $TCPDF->Image($img_file, 0, 0, 225, 305, '', '', '', false, 300, '', false, false, 0);

        // set the starting point for the page content
        $TCPDF->setPageMark();
        $TCPDF->setPrintFooter(false);
        // END BACKGROUND MODS -------------------------------->
于 2012-09-19T22:39:08.823 回答