magento 如何在TCPDF中添加图像

t9eec4r0  于 2022-11-12  发布在  其他
关注(0)|答案(3)|浏览(332)

我想在我的Magento商店中使用TCPDF在标题中添加一个图像。
我是这样做的:

$tcpdf = new TCPDF_TCPDF();
$img = file_get_contents(Mage::getBaseDir('media') . '/dhl/logo.jpg');

$PDF_HEADER_LOGO = $tcpdf->Image('@' . $img);//any image file. check correct path.
$PDF_HEADER_LOGO_WIDTH = "20";
$PDF_HEADER_TITLE = "This is my Title";
$PDF_HEADER_STRING = "This is Header Part";

$tcpdf->SetHeaderData($PDF_HEADER_LOGO, $PDF_HEADER_LOGO_WIDTH, $PDF_HEADER_TITLE, $PDF_HEADER_STRING);

$tcpdf->Output('report_per_route_'.time().'.pdf', 'I');

如果我想添加我的商店名称(左角)和徽标(右角),我必须遵循哪些步骤?

dsekswqp

dsekswqp1#

如果你试图使用WriteHTML()生成pdf,这里有一个小技巧,可以在不使用image()函数的情况下添加图像。
简单地使用HTML <img>,如下所示:
$image_path = 'path/to/image'; $print = '<p>some text here...</p>'; $print .= '<img src=" '. $image_path .' ">' ;
并且可以使用内联css来应用高度、宽度等。

jdg4fx2g

jdg4fx2g2#

TCPDF在以HTML格式插入图像时很棘手。它实现了一些黑客技术来判断正在加载的内容:
1.插入具有src属性的图像作为绝对路径-必须具有星星*前缀:
<img src="*/var/www/my-image.png">
1.插入具有src属性的图像作为相对路径-两个示例都被视为相对路径:
<img src="/var/www/my-image.png">
<img src="var/www/my-image.png">
请注意,相对路径在linux和windows上的计算方式不同--在windows上正确的计算方式在linux上可能不适用。这是由于检查路径字符串中的第一个字符是否为正斜杠/造成的,它被认为是linux根目录,并且路径将被重新计算--相对路径将附加到全局变量DOCUMENT_ROOT
1.正在加载base-64编码字符串-在src属性中必须具有@前缀:
<img src="@iVBORw0KGgoAAggfd0000555....">
<img src="@'.base64_encode(file_get_contents($path)).'" width=50 height=35>
如果您想避免计算正确路径的问题,这是一个安全的选择,但是会增加额外的I/O开销,因为TCPDF会尝试将提供的数据存储为临时图像文件,以便确定图像的宽度和高度。

6mzjoqzu

6mzjoqzu3#

首先,$PDF_HEADER_LOGO应该是一个图像文件名,而不是图像数据-就像Header的默认实现一样()函数.但是,有一点需要记住,确切位置取决于K_PATH_IMAGES常量,其中应该包含图像文件夹路径.如果其定义之前包含TCPDF库其就可以了,如果没有,TCPDF将检查一些默认路径,并将第一个现有路径用作映像目录。这些目录是:

  • ./示例/图像/
  • ./图像/
  • /usr/共享/doc/php-tcpdf/示例/图像/
  • /usr/共享/doc/tcpdf/示例/图像/
  • /usr/共享/doc/php/tcpdf/示例/图像/
  • /var/www/tcppdf/图像/
  • /var/www/html/tcppdf/图像/
  • /usr/本机/apache 2/htdocs/tcpdf/images/
  • K_PATH_MAIN(即tcpdf根文件夹)

因此,要么在之前定义常量,要么将文件放到上述目录之一,然后只将文件名作为第一个参数传递给SetHeaderData,这样就可以工作了。
要使Footer具有类似的功能,您需要扩展TCPDF_TCPDF基类并覆盖其Footer方法。
示例:

class MYPDF extends TCPDF_TCPDF {

    // Page footer
    public function Footer() {
        // Position at 15 mm from bottom
        $this->SetY(-15);
        // Set font
        $this->SetFont('helvetica', 'I', 8);
        // Page number
        $this->Cell(0, 10, 'COMPANY NAME', 0, false, 'C', 0, '', 0, false, 'T', 'M');
        $this->Image('/path/to/image.jpg', 500)
    }
}

你可能需要计算出精确的坐标。特别是在Image中,它取决于你的尺寸,你可以在Image函数中添加另一个参数y坐标,以及另外两个参数-图像的宽度和高度。
最重要的是,我建议您查看TCPDF页面上的优秀示例部分:
http://www.tcpdf.org/examples.php

相关问题