У меня есть записи, хранящиеся в базе данных. Я хотел бы напечатать их на этикетках 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 во время вызова этих методов.
Любая помощь очень ценится ...
Решено с помощью ответа на этот вопрос: Как я могу использовать TCPDF для создания листов этикеток размером 2x6, содержащих двухмерные штрих-коды, БЕЗ использования столбцов ИЛИ сторонних классов?
Я использовал TCPDF и рекомендуемый метод создания qrcode, а затем ячейку вокруг него для печати текста.