2013-04-16 6 views
0

Я хочу показать qrcode с URL-адреса. Я стараюсь это, но что dind't работа, я думаю, что мой код не сохраняет URL на моем компьютере, и он не в состоянии пошел он попытку открыть QRcodeZend_pdf, показать URL-адрес (qrcode)

$imageUrl = 'https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=toto'; 
    $imagePath = sys_get_temp_dir() . '\\' . basename($imageUrl); 
    file_put_contents($imagePath, file_get_contents($imageUrl)); 
    $image = Zend_Pdf_Image::imageWithPath($imagePath); 
    unlink($imagePath); 

    $page = $this->newPage($settings); 
    $page->drawImage($image, 0, 842 - 153, 244, 842); 

Благодарность

+0

Пожалуйста, будьте более конкретными при описании проблемы, чтобы увеличить шансы получить помощь. Просто «не работает» не очень описательный. – Havelock

+0

Вы проверили свой 'temp_dir', чтобы узнать, есть ли в нем что-то? – Havelock

ответ

0

Проблемы вы с адресом basename URL-адреса, вы пытаетесь установить имя файла, что приводит к чему-то вроде C:\TEMP\chart?chs=150x150&cht=qr&chl=toto, что не является допустимым именем файла.
Также вы не можете «загрузить» изображение с помощью file_get_contents. Вам нужно будет использовать cURL. Что-то, как это должно сделать работу:

$imageUrl = 'https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=toto'; 
$imgPath = sys_get_temp_dir() . '/' . 'qr.png'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $imageUrl); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
$raw = curl_exec($ch); 

if (is_file($imgPath)) { 
    unlink($imgPath); 
} 

$fp = fopen($imgPath, 'x'); 
fwrite($fp, $raw); 
fclose($fp); 

И тогда вы можете использовать $imgPath для создания PDF-файл.

+1

Спасибо Havelock – Jeremy