1

Bonjour,

Je suis novice

Est ce que quelqu'un sait comment faire pour interpréter cette image

<img src="http://gwdev.zoomacom.org/index.php?menuaction=addressbook.uicontacts.photo&contact_id=5" />


dans du pdf grâce à la librairie ?


Merci d'avance

2

normalement, ca devrait marche directement. Quant tu essaye de le convertir en PDF, il te marque quoi ?
Ancien pseudo : lolo

3

Il me marque cette erreur :

ERREUR n°6
Fichier : C:\wamp\www\pdf\html2pdf\html2pdf.class.php
Ligne : 1386

Impossible de charger l'image http://gwdev.zoomacom.org/index.php?menuaction=addressbook.uicontacts.photo&contact_id=5


Voici le code ma page :

<?php
/**
* Logiciel : exemple d'utilisation de HTML2PDF
*
* Convertisseur HTML => PDF, utilise fpdf de Olivier PLATHEY
* Distribué sous la licence GPL.
*
* @author Laurent MINGUET <webmaster@spipu.net>
*/
ob_start();
?>
<page style="font-size: 14px">
<table border="1" width="100%">
<tr>
<td><b>Identit&eacute;</b></td>
<td><b>Fonction</b></td>
<td><b>Adresse</b></td>
<td><b>Email</b></td>
<td><b>Latitude</b></td>
<td><b>Longitude </b></td>
<td><b>Logo</b></td>
</tr>

<tr>
<td>Mr admin admin</td>
<td>Test</td>
<td>4 allée du printemps, 42000 SAINT ETIENNE</td>
<td>admin.admin@zoomacom.org</td>
<td>45.470581</td>
<td>4.407057</td>
<td><img src="http://gwdev.zoomacom.org/index.php?menuaction=addressbook.uicontacts.photo&contact_id=5" /> </td>
</tr>
</table>

</page>
<?php
$content = ob_get_clean();
require_once(dirname(__FILE__).'\html2pdf\html2pdf.class.php');
$html2pdf = new HTML2PDF('P','A4','fr');
$html2pdf->WriteHTML($content, isset($_GET['vuehtml']));
$html2pdf->Output();

4

ok, donc ca pourrait venir d'un paramétrage de PHP : allow_url_open

essaye avec l'image suivante : http://www.e-toil.com/www/img/logo_php.jpg

si ca ne marche pas non plus, c'est que ton php n'est pas configuré pour avoir le droit d'accéder à des fichiers extérieurs
Ancien pseudo : lolo

5

Avec l'url que tu m'as donné cela marche ....

L'extension allow_url_open est bien activé ...

D'autres solutions ?

6

si c'est une image de ton site, essayes d'y accéder via un chemin relatif directement (vu que tu as l'id de la photo)

sinon, comme çà, je ne vois pas sad
Ancien pseudo : lolo

7

Je viens de voir que dans mon example, la fonction appelé pour récupérer la photo fait appel à :

ob_start();


puis après récupération infos :

if (!ob_get_contents())
{
header('Content-type: image/jpeg');
header('Content-length: '.(extension_loaded(mbstring) ? mb_strlen($contact['jpegphoto'],'ascii') : strlen($contact['jpegphoto'])));
echo $contact['jpegphoto'];
exit;
}


si j'enlève la partie ob_start j'obtiens mo code html mais avec le message suivant : FPDF error: Some data has already been output, can't send PDF file

Une idée ?

Merci d'avance de votre aide

8

ben vi :
Spipu (./6) :
si c'est une image de ton site, essayes d'y accéder via un chemin relatif directement (vu que tu as l'id de la photo)


Ancien pseudo : lolo

9

Je ne comprends pas ta réponse ...

Je me ré expliques :

grâce à la d'adresse de l'image, cela me permet d'accéder à la fonction suivante développé par le progiciel egroupware :

function photo2()
{

ob_start();
$contact_id = isset($_GET['contact_id']) ? $_GET['contact_id'] :
(isset($_GET['account_id']) ? 'account:'.$_GET['account_id'] : 0);
if (substr($contact_id,0,8) == 'account:')
{

$contact_id = $GLOBALS['egw']->accounts->id2name(substr($contact_id,8),'person_id');
}
if (!($contact = $this->read($contact_id)) || !$contact['jpegphoto'])
{

$GLOBALS['egw']->redirect($GLOBALS['egw']->common->image('addressbook','photo'));
}

if (!ob_get_contents())
{
header('Content-type: image/jpeg');
header('Content-length: '.(extension_loaded(mbstring) ? mb_strlen($contact['jpegphoto'],'ascii') : strlen($contact['jpegphoto'])));
echo $contact['jpegphoto'];
exit;
}
}

par rapport au code d'origine, si je tapes :

<?php
/**
* Logiciel : exemple d'utilisation de HTML2PDF
*
* Convertisseur HTML => PDF, utilise fpdf de Olivier PLATHEY
* Distribué sous la licence GPL.
*
* @author Laurent MINGUET <webmaster@spipu.net>
*/
//ob_start();
?>
<page style="font-size: 14px">
<b>Identit&eacute; : </b>Mr admin admin<br><br>
<b>Fonction : </b>Test<br><br>
<b>Adresse :</b><br><br>4 allee de l'automne<br>42000 SAINT ETIENNE<br><br>
<b>Email : </b>admin.admin@zoomacom.org<br><br>
<b>Nos coordonn&eacute;es g&eacute;ographiques : </b><br>
<b>Latitude</b> : 45.470581<br>
<b>Longitude</b> : 4.407057<br><br>
<b>Image</b> : <img src="http://gwdev.zoomacom.org/index.php?menuaction=addressbook.uicontacts.photo2&contact_id=5">

</page>
<?php

$content = ob_get_clean();
require_once(dirname(__FILE__).'\html2pdf\html2pdf.class.php');
$html2pdf = new HTML2PDF('P','A4','fr');
$html2pdf->WriteHTML($content, isset($_GET['vuehtml']));
$html2pdf->Output();
?>


j'obtiens le code html mais avec le message suivant :

FPDF error: Some data has already been output, can't send PDF file


NotaBN :

Si je laisse le code ob_start() dans le code ci-dessus mais que je l'enlève de la fonction photo2, j'obtiens l'erreur des premiers messages => pas possible de lire l'image


10

bon apparemment, il y a un pb quelque part, j'ai fait des tests, et j'obtiens ca : [lien enlevé]

je vais creuser un peu.

sinon, 2 petits pts :
1- c'est normal que ca foire si tu enlèves le ob_start... regarde sur le site de PHP à quoi sert cette fonction wink
2- il faudrait je pense que que tu modifies ta fonction photo2 :
if (!ob_get_contents())
{
header('Content-type: image/jpeg');
header('Content-length: '.(extension_loaded(mbstring) ? mb_strlen($contact['jpegphoto'],'ascii') : strlen($contact['jpegphoto'])));
echo $contact['jpegphoto'];
exit;
}
else
{
echo "Impossible d'envoyer l'image au navigateur : des données ont déjà été écrites";
exit;
}


[edit] lien enlevé
Ancien pseudo : lolo

11

Bonjour

J'ai essayé votre conseil, j'ai essayé de mettre les ob_start, d'essayer avec les ob_get_contents ..... ob_get_clean ....

Rien ne marche c vraiment pas possible ....

Merci de votre aide


A+

12

ok, j'ai trouvé, tu as une protection sur ton site, qui fait une redirection quand on essaye de charger l'image si on est pas authentifié, ou qu'on a pas de cookie de session, ce qui est le cas de php quand il veut récupérer l'image...

cf ici : http://html2pdf.fr/_html2pdf/exemples/test.php?make_pdf=&nom=spipu

c'est donc de ton côté que ça coince...
Ancien pseudo : lolo

13

Donc tu penses que je devrais faire comment ?


As tu essayés de faire apparaître avec le pdf ou pas ?

Peux tu me passer le code que tu as fait pour que je puisse tester ?


Merci d'avance

14

ben passer par un script photo.php en passant l'id de l'utilisateur en param... le pb étant que cette ne sera pas protégée...

ce que j'ai fait : juste un file_get_contents de ton url => ca m'a affiché qu'il y avait une redirection.

du coup, j'ai tracé, et j'ai vu qu'il redirigeait vers une page de login qui précisait que je n'avais pas de session (http://gwdev.zoomacom.org:80/login.php?phpgw_forward=%2Findex.php%3Fmenuaction%3Daddressbook.uicontacts.photo2%26amp%3Bcontact_id%3D5)

faut savoir débugger dans la vie quand on est programmeur wink
Ancien pseudo : lolo

15

Au sujet de ob_start ... est ce qu'il faut que tu fasses quelque chose de particulier sous php ou pas ?

Sinon, pour accéder à l'image, j'utilise un egroupware (http://www.egroupware.org) qui pour récupérer infos utilise xmlrpc => fonction pour me loguer, récupérer infos ....

Dans ces infos, j'ai une partie photo => où je dois taper le chemin donné depuis le début pour image .....

Donc ma question est est ce que si je fais cette manipulation avant de taper ton code, cela devrait fonctionner .....


Pour l'instant sur mon serveur de test, j'obtiens toutes les infos, mais pb avec le ob_start ... qui ne marche pas ????


A+

16

pour ton image, je ne vois pas trop comment tu pourrais y arriver si ton script qui génère le PDF est différent de là ou se situe l'image... car si sécurité il y a sur ce serveur... vu que je ne connais pas le ssytème, je ne pourrais pas t'aider.

tant que tu n'arrives pas à accéder à l'image avec un simple file_get_contents (ou équivalent), tu ne pourras la mettre dans le pdf.

pour le obstart, tu veux dire quoi par "ne marche pas" ?
Ancien pseudo : lolo

17

nouvelle erreur maintenant qui apparaît

FPDF error: mbstring overloading must be disabled