Как добавить динамически сгенерированные qrcodes в pdf для этикеток с помощью fpdf и pdf_label

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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
2 449
1

Ответы 1

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

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

Другие вопросы по теме