如何使用fpdf和pdf_label将动态生成的qrcode添加到pdf以获取标签

时间:2018-08-31 14:13:06

标签: php qr-code fpdf

我有一些记录存储在数据库中。我想将它们打印到一些Avery标签上。我可以使用FPDF创建pdf文档。我可以使用扩展了FPDF的PDF_Label轻松定位信息以使其与Avery标签对齐。到目前为止,一切都很好。

除了输出文本外,我还想用一个二维码表示一些数据。我可以创建二维码,将它们作为.png文件临时存储在磁盘上。我可以将qr_codes作为图像插入.pdf文档中。到目前为止一切顺利。

但这是问题所在:PDF_label创建了与Avery标签对齐的“单元”,并专门处理文本而不是图像。如何“轻松”将每个二维码插入每个标签?

我在网上看了两天,但是对此似乎没有什么指导-除了一条特别警告不要将图像插入FPDF单元的建议。

一个选择也许是使用TCPDF,但我希望您对一些扩展名(如果有用)提出一些建议。

作为记录,到目前为止我的代码是:

<?php
    require_once( 'vendor/fpdf181/fpdf.php' );
    require_once( 'vendor/fpdf_label/PDF_Label.php');
    require_once( 'vendor/phpqrcode/qrlib.php' );

   // fetch data from database
   /* … works fine and creates an array of locations … */

   foreach( $locations as $location )
   {
        $title          = "Location " . $location['id'];
        $name           = $location['name'];
        $footer         = "https://www.example.com/something/";
        $barcode_text   = "https://www.example.com/something/?t=1&u=1&l=" . $location['id'];

        // create a temporary file to hold the barcode.png
        $filePath       = './qr_codes/temp_'. $location['id'] . '.png';

        $qr_code        = new QRcode();
        QRcode::png( $barcode_text, $filePath );



        $text  = "";
        $text .= sprintf( $title . "\n" . $name . "\n");
        $text .= $pdf->Image( $filePath, $pdf->GetX(), $pdf->GetY(), 20 );
        $text .= sprintf( "\n" . $footer );


        //$pdf->Add_Label($text);
        $pdf->Add_Label($text);
}

从7条记录中,这仅在pdf上生成3个qrcode。可能有几张图像相互重叠。 qr_codes在每行标签的顶部垂直对齐,但未正确水平放置。大概是因为这是调用这些方法时GetX和GetY给出的位置。

任何帮助表示赞赏...

1 个答案:

答案 0 :(得分:0)

已帮助您回答以下问题: How can I use TCPDF to make 2x6 sheets of labels that include 2D barcodes WITHOUT using columns OR 3rd-party classes?

我使用了TCPDF和推荐的创建qrcode的方法,然后使用“围绕”它的单元格来打印文本