2016-10-07 33 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