J'utilise TCPDF avec le module Drupal print pour générer PDF d'articles, & se terminant par le message d'erreur suivant lorsque je clique sur le lien pour générer un PDF:
TCPDF ERROR: [Image] Unable to get image: http://localhost/pathToDrupal/themes/bartik/logo.png
L'image existe à l'emplacement spécifié. J'ai essayé de postuler:
allow_url_fopen = On;
allow_url_include = On;
dans php.ini
mais cela n'a pas pu résoudre le problème.
Veuillez aider à aider :(
Apparemment, les enveloppes "fopen" ne sont pas utilisées par TCPDF.
Si vous fournissez l'URL d'une image, TCPDF essaie de la télécharger avec cURL dans le répertoire "cache" où est stockée votre installation TCPDF (vous devez vérifier ce que le K_PATH_CACHE
- constante contient pour être sûr).
Je suppose donc que vous devez avoir des autorisations d'écriture dans ce répertoire pour que la magie fonctionne. Vous devez également activer cURL.
Nous avons eu des problèmes avec la façon dont les connexions étaient gérées dans notre serveur linux "example.com". Cela nous a donc conduit à essayer sur le serveur:
curl -v http://www.example.com/image.jpg
Chaque fois que TCPDF essayait de télécharger une image avec curl, l'image était introuvable, néanmoins, nous pouvions voir l'image en l'ouvrant directement dans le navigateur (par exemple http://www.example.com/image.jpg) ).
Nous avons résolu le problème en définissant example.com VirtualHost pour accepter les connexions 127.0.0.1 et en ajoutant la ligne "127.0.0.1 example.com" à/etc/hosts.
Utilisez simplement le chemin de l'image comme "images/votre_image.png" au lieu de " http://votredomaine.com/images/votre_image.png " dans le PDF html .
J'ai trouvé que TCPDF lancerait l'erreur Impossible d'obtenir l'image: lorsque le src était un lien absolu. Le simple fait de passer à un lien relatif créerait avec succès le PDF.
J'ai eu ce problème sur un serveur de transfert où la docroot du site était protégée par un fichier .htaccess (pour éviter l'indexation des moteurs de recherche et autres confusions)
tcpdf utilise curl pour récupérer l'image et il donne cette erreur s'il ne peut pas accéder au fichier.
Pour le résoudre, j'ai ajouté une règle à .htaccess pour autoriser les requêtes du serveur web
Allow from 123.45.6.7.8
Essayez d'ajouter un chemin par le répertoire de travail actuel.
$img = getcwd().'/web/bundles/_bundlename_/img/logo.png';
$pdf->Image($base_url.'/'.$node->field_loc_images[0]['filepath'] ,30, 40, 75, 113, 'JPG', '', '', true, 300, '');
Dans vos problèmes de police unicode, vous devez mettre ce code de syntaxe:
// set font
$fontname = $pdf->addTTFfont('../your path here/sampletruetype.ttf', 'TrueTypeUnicode', '', 32);
$pdf->SetFont($fontname, '', <font size value here>);
mettez-le avant d'ajouter la page ...
Dans drupal assurez-vous d'inclure la bibliothèque tcpdf dans votre fonction et non en haut de votre fichier de module ou vous obtiendrez cette erreur.
essayez cela aussi
foreach($node->field_loc_images as $key=> $s)
{
$pdf->Image($base_url.'/'.$s['filepath'], $x, $y, $w, $h, 'JPG', '', '', false, 300, '', false, false, 0, $fitbox, false, false);
}
Pour développer l'erreur. Il semble également échouer avec les images intégrées en base64. C'est un gros problème pour moi en ce moment.
Après avoir mis à niveau PHP 5.5 à 5.6, j'ai perdu des heures à cause d'une erreur d'image,
J'ai trouvé la solution ici depuis @ caligari (un commentaire sur la réponse acceptée) et cela a résolu le problème pour moi:
installez CURL comme ceci:
apt-get install php5-curl && /etc/init.d/Apache2 restart.
Dans mon cas, j'ai essayé de
curl -v http://www.example.com/image.jpg
et la "curl: (60) vérification du certificat du serveur a échoué." a été montré. Il s'agissait donc simplement d'un problème de certificat.