Extension html2pdf dans MediaWiki

Extension html2pdf dans MediaWiki - PHP - Programmation

Marsh Posté le 31-03-2008 à 15:57:19    

Bonjour,
 
Depuis ce matin, j'essaye d'intégrer l'extension php2pdf dans MediaWiki sur la base de cette doc : http://meta.wikimedia.org/wiki/HTML2FPDF_and_Mediawiki
 
J'arrive bien à avoir l'onglet "pdf" dans mon ihm mais c'est la modif du fichier index.php qui a l'air de coincer : impossible d'obtenir le pdf. J'obtiens un message d'erreur d'adobe : Le document ne commence pas par "%PDF-" :(
 
J'ai l'impression qu'aucune info n'est envoyée dans le fichier pdf et que c'est pour ça que j'ai cette erreur.  
 
Est-ce que qq a déjà utilisé cette extension avec succès?


Message édité par rufo le 31-03-2008 à 15:59:00

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 31-03-2008 à 15:57:19   

Reply

Marsh Posté le 03-04-2008 à 10:26:26    

Un petit up à tout hasard...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 03-04-2008 à 11:18:08    

ouvre le pdf obtenu avec un éditeur de texte, tu as probablement une erreur php dedans.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 03-04-2008 à 11:57:33    

c'est ce que j'ai pensé. Mais je n'arrive pas à faire cette manip. Comme on peut le voir dans le code qui se trouve sur l'url que j'ai donnée, y'a du ob_start() et du ob_end_clean(). Donc mon navigateur ne va pas avoir grand chose car le tout est envoyé à la lib pdf. Donc, je me suis dit que je pourrais envoyer ce contenu dans un log en txt avant l'appel à la cette lib. Comme ça, si y'a un warning ou un fatal error de php, je le verrai. Ben non, mon fichier reste vide. Par contre, si je fais un echo "toto" en début de script (mais après le ob_start), je le retrouve bien dans mon log. Ma conclusion, c'est que pour une raison encore inconnue, le wiki, n'arrive pas à bufferiser l'article (au lieu de l'affiche, comme c'est le cas par défaut si j'appelle pas la conversion pdf) et l'envoyer à la lib pdf. Du coup, la lib pdf constate qu'il n'y a pas de données à convertir et renvoie un fichier vide (taille nulle). D'où le msg d'erreur d'adob qui dit qu'il ne trouve pas l'entête de fichier pdf attendue...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 03-04-2008 à 11:59:01    

rufo a écrit :

c'est ce que j'ai pensé. Mais je n'arrive pas à faire cette manip. Comme on peut le voir dans le code qui se trouve sur l'url que j'ai donnée, y'a du ob_start() et du ob_end_clean(). Donc mon navigateur ne va pas avoir grand chose car le tout est envoyé à la lib pdf. Donc, je me suis dit que je pourrais envoyer ce contenu dans un log en txt avant l'appel à la cette lib. Comme ça, si y'a un warning ou un fatal error de php, je le verrai. Ben non, mon fichier reste vide. Par contre, si je fais un echo "toto" en début de script (mais après le ob_start), je le retrouve bien dans mon log. Ma conclusion, c'est que pour une raison encore inconnue, le wiki, n'arrive pas à bufferiser l'article (au lieu de l'affiche, comme c'est le cas par défaut si j'appelle pas la conversion pdf) et l'envoyer à la lib pdf. Du coup, la lib pdf constate qu'il n'y a pas de données à convertir et renvoie un fichier vide (taille nulle). D'où le msg d'erreur d'adob qui dit qu'il ne trouve pas l'entête de fichier pdf attendue...


et si au lieu de l'ouvrir dans adobe reader tu fais clic droit>enregistrer sous?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 03-04-2008 à 13:59:16    

Ca ne peut pas marcher comme ça. Le processus est le suivant. Tout passe par index.php. Par défaut, il affiche l'article demandé dans l'url (index.php/TitreArticle). Si je peux avoir la version imprimable, le wiki rajoute un paramètre à l'url : index.php?title=TitreArticle&printable=yes
Le principe de l'extension dont je parle propose de rajouter dans index.php la prise en compte d'un nouveau paramètre afin de générer le pdf. Ca rajoute donc un onglet dans la barre au-dessus de l'article avec comme url : index.php?title=TitreArticle&printable=yes&pdf=yes
 
L'idée de cette extension est donc de demander à afficher la version imprimable de l'article mais au lien de l'envoyer dans le navigateur, la sortie html est bufferisée et envoyer à la lib pdf pour effectuer la conversion. Ensuite, c'est un entête "Content-type: application/pdf" qui est transmis au navigateur afin de permettre le téléchargement du fichier généré.
 
Mon pb, je pense, se situe au niveau de la génération de la version imprimable qui, avec le paramètre pdf, n'est pas faite. Du coup, mon pdf est vide. En gros, j'ai l'impression que le wiki ne génère aucun contenu et appelle malgré tout la lib pdf qui, forcément, n'a aucun contenu à convertir, d'où un fichier vide en sortie du processus. Regardes le code source de la page que j'ai mis en lien et ce que je viens de décrire est bien le processus effectué par l'extension. Y'a peut-être qq chose qui m'a échappé. Si tu veux, je peux poster le fichier index.php de Media Wiki avant et après l'extension...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 03-04-2008 à 14:02:37    

rufo a écrit :

Ca ne peut pas marcher comme ça. Le processus est le suivant. Tout passe par index.php. Par défaut, il affiche l'article demandé dans l'url (index.php/TitreArticle). Si je peux avoir la version imprimable, le wiki rajoute un paramètre à l'url : index.php?title=TitreArticle&printable=yes
Le principe de l'extension dont je parle propose de rajouter dans index.php la prise en compte d'un nouveau paramètre afin de générer le pdf. Ca rajoute donc un onglet dans la barre au-dessus de l'article avec comme url : index.php?title=TitreArticle&printable=yes&pdf=yes

 

L'idée de cette extension est donc de demander à afficher la version imprimable de l'article mais au lien de l'envoyer dans le navigateur, la sortie html est bufferisée et envoyer à la lib pdf pour effectuer la conversion. Ensuite, c'est un entête "Content-type: application/pdf" qui est transmis au navigateur afin de permettre le téléchargement du fichier généré.

 

Mon pb, je pense, se situe au niveau de la génération de la version imprimable qui, avec le paramètre pdf, n'est pas faite. Du coup, mon pdf est vide. En gros, j'ai l'impression que le wiki ne génère aucun contenu et appelle malgré tout la lib pdf qui, forcément, n'a aucun contenu à convertir, d'où un fichier vide en sortie du processus. Regardes le code source de la page que j'ai mis en lien et ce que je viens de décrire est bien le processus effectué par l'extension. Y'a peut-être qq chose qui m'a échappé. Si tu veux, je peux poster le fichier index.php de Media Wiki avant et après l'extension...


Crée un lien sur une page de test qui envoie sur ta page qui envoie un header pdf, et clic droit/enregistrer.[:skeye]
Ou alors empeche ton navigateur d'ouvrir les pdf sans te demander ton avis avant. Tu n'arriveras à rien si tu ne sais pas ce qui est réellement sorti par ton script.

Message cité 1 fois
Message édité par skeye le 03-04-2008 à 14:02:59

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 03-04-2008 à 14:45:59    

skeye a écrit :


Crée un lien sur une page de test qui envoie sur ta page qui envoie un header pdf, et clic droit/enregistrer.[:skeye]
Ou alors empeche ton navigateur d'ouvrir les pdf sans te demander ton avis avant. Tu n'arriveras à rien si tu ne sais pas ce qui est réellement sorti par ton script.


 
je suis bien d'accord avec toi. Au lieu de faire un lien comme tu me le proposes, moi, j'avais fait une sauvegarde de ce qui était bufferisé dans un fichier txt. Je pense que ça revient au même que ta proposition, non?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 03-04-2008 à 21:42:39    

Citation :

Le document ne commence pas par "%PDF-" :(


Il est difficile de se prononcer sans voir votre code. Est-ce que c'est exactement celui qui est sur la page du lien, ou bien y a-t-il eu de petites altérations ? Par exemple, est-ce que le nom du fichier est bien "doc.pdf" dans la ligne suivante ?

 $pdf->Output('doc.pdf','I');

Reply

Marsh Posté le 04-04-2008 à 09:21:05    

moi, c'est ce que j'ai laissé comme nom de fichier. Moi, c'est cette ligne là qui m'a laissé perplexe : $pdf->setBasePath("./../wi" );
J'ai essayé avec ça puis avec un chemin existant accessible 777, mais ça n'a rien changé.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed