как добавить динамически сгенерированные qrcodes в pdf для меток, используя fpdf и pdf_label - PullRequest
0 голосов
/ 31 августа 2018

У меня есть несколько записей, хранящихся в базе данных. Я хотел бы напечатать их на некоторых этикетках Avery. Я могу использовать FPDF для создания PDF-документа. Я могу использовать PDF_Label, который расширяет FPDF, чтобы легко расположить информацию для выравнивания с метками Avery. Все идет нормально.

В дополнение к выводу текста я хотел бы представить некоторые данные в qr-коде. Я могу создавать коды qr, временно сохраняя их на диске в виде файлов .png. Я могу вставить qr_codes как изображения в PDF-документ. Пока все хорошо.

Но вот в чем проблема: PDF_label создает «ячейки», которые соответствуют меткам Avery и, в частности, обрабатывают текст, а не изображения. Как я могу «легко» вставить каждый код qr в каждую метку?

Я смотрел онлайн в течение двух дней, но, похоже, очень мало рекомендаций по этому поводу - кроме одного совета, который отдельно предупреждает НЕ вставлять изображения в ячейки 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 записей это дает всего 3 qrcodes в PDF. Возможно, несколько изображений накладываются друг на друга. Qr_codes выровнены по вертикали для верхней части каждого ряда меток, но не правильно расположены горизонтально. Предположительно, это связано с тем, что именно такую ​​позицию задают GetX и GetY во время вызова этих методов.

Любая помощь высоко ценится ...

1 Ответ

0 голосов
/ 01 сентября 2018

Решено с помощью ответа на этот вопрос: Как я могу использовать TCPDF для создания этикеток размером 2x6, включающих 2D штрих-коды, БЕЗ использования столбцов ИЛИ сторонних классов?

Я использовал TCPDF и рекомендованный метод создания qrcode, а затем ячейку «вокруг» для печати текста

...