2013-04-16 2 views
0

URL에서 qrcode를 표시하고 싶습니다. 나는 이것을 시도하지만 dind't 작업, 내 코드가 내 컴퓨터에 URL을 저장하지 않습니다 생각 그는 그가하시면 자동에게Zend_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

문제를 설명 할 때 좀 더 자세하게 설명하면 도움을 얻을 수있는 기회가 늘어납니다. 단순한'did not work'는별로 설명 적이 지 않습니다. – Havelock

+0

'temp_dir'을 체크하여 뭔가가 있는지 확인 했습니까? – Havelock

답변

0

당신이있어 문제를 열려고 갔다 실패 URL에 basename이 있으면 파일 이름으로 설정하려고하는데 올바른 파일 이름이 아닌 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); 

을 그리고 당신은 PDF 이미지를 만들 $imgPath을 사용할 수 있습니다 : 이런 식으로 뭔가가 작업을 수행해야합니다.

+1

감사 Havelock – Jeremy