Dompdf надо вывести генерируемую картинку
MySite/index.php/Welcome/printBarcode/001
Здравствуйте у меня тут генерируемая картинка при переходе на эту страницу последние числа преобразовывается в картинку с штрих кодом
этот файл не сохраняется и поэтому если подставить .png то выйдет ошибка из за отсутствия файла
а Dompdf без формата не принимает, но если поставить отдельный тег (извне Dompdf) в то все выводится корректно
пробовал file_get_contents но тут нужна авторизация и при написании полной пути оно выводит login_page
php7.3, dompdf-v0.83
Ответы (2 шт):
Я могу предложить такое "кривенькое" решение:
Как я понял вопрос: я так понял, что у Вас есть ID = 001759969001, Вам нужно "скормить" его скрипту printBarcode, (который, как я понимаю, представляет собой папку в файловой системе сервера, на коотором запущен php). Результатом будет картирка, которую выдаст printBarcode. Эту картинку надо передать в dompdf, который из картинки сделает pdf- файл. Но из за того, что dompdf требует "картирку с расширением" - сдлелать этот шаг - переход от сгенерированной картинки к генерации pdf - не получается.
Как я предлагаю решить проблему: давайте напишем промежуточный скрипт. Этот скрипт будет лежать в отдельной папке и представлять из себя простой php - файл. Он будет получать ID, переданный ему GET-ом, то есть обращение к скрипту будет выглядеть как MySite/script.php?ID=001759969001 Скрипт делает буквально вот что: он извлекает ID (при помощи $id = $_GET['id'];), обращается по пути MySite/index.php/Welcome/printBarcode/001759969001 при помощи file_get_contents(), сохраняет полученный файл во временную директорию с расширением png, а потом путь к этому - только что записанному на диск - файлу передаёт в dompdf.
Как я понял, Вы пытались сделать нечто подобное.
Так как у меня нет полной картины - я не собо понимаю, в каком месте и почему там возникнет авторизация. Мне кажется - так как авторизацией управляете Вы изнутри скрипта - можно написать его так, что никакой дополнительной авторизации не понадобится.
Если я что то не так понял - попробуйте написать в комментариях или дополнить вопрос, вполне возможно, найдутся более опытные товарищи, которые еще что то посоветуют
Решал подобную задачу так:
Библиотека, которую мы использовали для генерации штрих-кода, умела возвращать содержимое картинки без сохранения в файл.
В коде контроллера было примерно такое:
$barcode = $this->barcodeGenerator->createPng('908');
$html = $this->render->render('pdf_doc.tpl', ['barcode' => base64_encode($barcode)]);
$pdf = $this->pdf->createFromHtml($html);
return $pdf;
В шаблоне для PDF было что-то такое:
<img src='data:image/png;base64,{{ barcode }}'>
И всё работало хорошо, без насилия файловой системы