У меня есть несколько записей, хранящихся в базе данных. Я хотел бы напечатать их на некоторых этикетках 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 во время вызова этих методов.
Любая помощь высоко ценится ...