2016-10-07 1 views
1

J'utilise ce code pour générer un code QR et l'afficher:boucle ou file_get_contents a besoin chemin d'URL complète

<?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; ?>" /> 

Il génère et affiche sans problème, mais je ne veux pas affichage il , mais charger en "dompdf" (PHP PDF Generator). J'ai découvert que je ne peux pas donner à dompdf la variable "$ aux" ("< img src = '$ aux' />"). La variable renvoie la chaîne correcte, mais dompdf ne peut pas l'afficher (Probablement en raison d'être un fichier PHP). Je suis arrivé avec file_get_contents, mais étonnamment, il a retourné un fichier vide.

J'utilisé:

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

Il est pas en raison d'autorisations mauvaises, parce que ...

quand je tapé le chemin d'URL complète , il est copié "avec succès le fichier (http://localhost:2180/work/qr_img0.50j/php/qr_img.php?...), Mais je pense que ce n'est pas une solution fiable, à cause du port et des choses qui peuvent changer avec le temps. J'ai installé cURL et le même problème persiste: il s'affiche uniquement avec le chemin d'accès URL complet. J'ai essayé fopen pour 'lire' l'image dans un tampon, et le tampon est resté vide.

Peut-être que n'importe qui peut m'aider (et d'autres lecteurs), pour obtenir ces deux fonctions pour charger le fichier (peut-être sans le tout http peu fiable?).

Ou peut-être il y a une autre façon de générer des images de "qr_img0.50j" sans appeler php que je ne savais pas ...

Répondre

0

dompdf (en 0.6.1) ne traitera plus PHP dans votre document. Vous devrez le faire avant de passer le document à Dompdf. Probablement la méthode la plus simple pour cela est de rendre l'image et de l'insérer dans le document comme un uri de données.

Vous devrez peut-être modifier votre générateur QR pour qu'il fonctionne dans ce flux s'il n'est pas conçu pour l'exécution en ligne de commande. Idéalement, ce serait juste une fonction appelable, ce que j'ai supposé pour l'échantillon.

Avec 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(); 
?> 

Pour votre information, le même problème appliqué à file_get_contents. Il n'analyse pas le PHP d'un fichier. Il ne peut être utilisé que pour obtenir le fichier lui-même. Quelle que soit la méthode que vous utilisez pour obtenir un fichier, les résultats dépendent de la source. Les fichiers récupérés à partir du système de fichiers local auront et non analysés PHP. Les fichiers récupérés via un serveur web seront.

+0

Merci pour cela, je vais essayer, mais pouvez-vous m'expliquer, _why_ 'file_get_contents' travaillé avec une URL complète, étant donné que cette commande ne pas analyser PHP (mais il avait) ... – Fusseldieb

+0

Si vous fournissez une URL complète, vous récupérez en fait le fichier sur le serveur Web. Le serveur web * va * analyser le PHP avant de vous envoyer le fichier ... donc vous obtenez l'image. Si vous obtenez un fichier du système de fichiers local, le fichier ne sera pas analysé et vous obtiendrez la source PHP pas la sortie analysée. – BrianS

+0

Cela a du sens ... Mais d'où vous avez 'qr_img ('Text', 'H', '4', 'P');'? – Fusseldieb