2016-10-07 3 views
1

Я использую этот код для генерации QR-коды и его отображением:завитка или file_get_contents нужен полный адрес путь

<?php 
    $aux = 'qr_img0.50j/php/qr_img.php?'; 
    $aux .= 'd=Text&'; 
    $aux .= 'e=H&'; 
    $aux .= 's=4&'; 
    $aux .= 't=P'; 
?> 
<img width="250" src="<?php echo $aux; ?>" /> 

Он генерирует и отображает его без проблем, , но я не хочу, чтобы дисплея его , но загрузить в "dompdf" (PHP PDF Generator). Я узнал, что я не могу дать dompdf переменную «$ aux» («< img src = '$ aux' />»). Переменная возвращает правильную строку, но dompdf не может ее отобразить (возможно, из-за того, что она является файлом PHP). Я придумал file_get_contents, но удивительно, что он вернул пустой файл.

я использовал:

file_put_contents('tempqr.png', file_get_contents($qrc)); 

Это не из-за неправильные разрешения, потому что ...

, когда я напечатал весь URL-путь, это скопировано "файл успешно (http://localhost:2180/work/qr_img0.50j/php/qr_img.php?...), Но я думаю, что это не надежное решение из-за порта и вещей, которые могут меняться со временем. Я установил cURL, и эта же проблема сохраняется: она отображается только с полным URL-адресом. Я попробовал fopen «прочитать» изображение в буфер, и буфер остался пустым.

Может быть, кто-нибудь может мне помочь (и другим читателям) получить эти две функции для загрузки файла (может быть, без всякой http-ненадежной вещи?).

Или, может быть, есть еще один способ создания изображения из "qr_img0.50j" без вызова PHP, что я не знаю ...

ответ

0

DOMPDF (по 0.6.1) больше не будет разбирать PHP в документе. Вам нужно будет сделать это до передачи документа в Dompdf. Вероятно, самый простой способ сделать это - сделать изображение и вставить его в документ в виде данных-uri.

Возможно, вам придется изменить свой QR-генератор для работы в этом потоке, если он не предназначен для выполнения командной строки. В идеале это была бы только вызываемая функция, что я и предполагал для образца.

С DOMPDF 0.7.x:

<?php 
// require dompdf autoloader, then ... 

using Dompdf\Dompdf; 

$image = qr_img('Text', 'H', '4', 'P'); // assumine PNG output 
$html = '<img width="250" src="data:image/png;base64,' . base64_encode($image) . '" />'; 

$dompdf = new Dompdf(); 
$dompdf->load_html($html); 
$dompdf->render(); 
$dompdf->stream(); 
?> 

FYI, тот же вопрос применительно к file_get_contents. Он не анализирует PHP файла. Его можно использовать только для получения самого файла.

Независимо от конкретного метода, используемого для получения файла, результаты зависят от источника. Файлы, полученные из локальной файловой системы, будут иметь , а не. Файлы, полученные через веб-сервер, будут.

+0

Спасибо за это, я попробую, но вы можете объяснить мне, _why_ 'file_get_contents' работал с полным URL-адресом, учитывая, что эта команда не анализирует PHP (но это было) ... – Fusseldieb

+0

Если вы предоставите полный URL-адрес, то вы фактически извлекаете файл с веб-сервера. Веб-сервер * будет * анализировать PHP до отправки вам файла ... таким образом, вы получите изображение. Если вы получите файл из локальной файловой системы, файл не будет разбираться, и вы получите источник PHP, а не обработанный вывод. – BrianS

+0

Это имеет смысл ... Но откуда вы получили 'qr_img ('Text', 'H', '4', 'P');'? – Fusseldieb

 Смежные вопросы

  • Нет связанных вопросов^_^