2016-10-07 79 views
1

我用這個代碼來生成QR碼並將其顯示:捲曲或需要的file_get_contents完整的URL路徑

<?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生成器)。 我發現,我不能給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之前,您需要這樣做。可能最容易的方法是渲染圖像並將其作爲數據插入到文檔中。

如果不是爲命令行執行而設計的,您可能需要修改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(); 
?> 

僅供參考,同樣的問題適用於file_get_contents。它不解析文件的PHP。它只能用於獲取文件本身。

無論用什麼特定的方法獲取文件,結果都取決於源文件。從本地文件系統檢索到的文件將而不是已解析它們的PHP。通過Web服務器檢索到的文件將會。

+0

謝謝你,我會嘗試一下,但你能否解釋一下,_why_' file_get_contents'工作在一個完整的URL上,因爲這個命令不能解析PHP(但它有)... – Fusseldieb

+0

如果你提供一個完整的URL,那麼你實際上是從Web服務器上檢索文件。在發送文件之前,Web服務器*將*解析PHP ...因此您可以獲取圖像。如果您從本地文件系統獲取文件,則該文件將不會被解析,您將獲得PHP源文件而不是解析輸出。 – BrianS

+0

這是有道理的......但從你得到'qr_img('文本','H','4','P');'? – Fusseldieb