[RESOLU] Comment convertir une page en word ou PDF

as2
Eléphant du PHP | 132 Messages

06 janv. 2019, 17:16

Question courte :
Comment convertir une page disons HTML créée à partir d'un script php et une base de données MySQL en fichier word ou PDF.

La même question mais développée :

Bonjour,
Voilà je voudrais écrire un livre :)
Oh pas grand chose vous allez voir : un dictionnaire des acteurs français avec photos à l'appui.
Je le ferai édité en autoédition chez lulu.com, j'ai déjà un compte chez eux et j'ai déjà fait éditer des "trucs" :)
Bon, le problème avec eux c'est qu'ils n'acceptent que le format PDF ou WORD.
Moi je veux pas retaper le nom des 3000 acteurs qui sont déjà dans une base de données MySQL.
Ce que je sais faire (enfin je suis pas un spécialiste non plus) c'est créer un script PHP qui afficherait des pages HTML ou PHP avec tableaux, photos, textes, ... qui présenterait de façon claires mes données, çà pas de problèmes je peux faire un truc "joli".
Mais comment le convertir en word ou PDF ???

That is the question, and i have not pour le moment la solution, et çà serait sympa de m'aider sur le sujet ...

Eléphant du PHP | 385 Messages

07 janv. 2019, 03:38

Salut,

Tu dois utiliser une librairie https://github.com/mikehaertl/phpwkhtmltopdf ou encore https://github.com/mpdf/mpdf pour word https://github.com/PHPOffice/PHPWord regarde selon ta version de php et des fonctionnalités que tu as besoin.

Mammouth du PHP | 1967 Messages

07 janv. 2019, 09:15

Tu peux aussi adapter ta css à l'impression,

Vu que ce boulot n'est à faire qu'une seule fois, tu peux très bien générer tous le contenu dans ton navigateur et l'imprimer avec une imprimante pdf. en adaptant ton css à ton impression, tu pourra obtenir le rendu voulu
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

07 janv. 2019, 11:17

+1 pour la réponse de Kevin254kl.
Je recommande aussi wkhtmltopdf et PHPWord
Quand tout le reste a échoué, lisez le mode d'emploi...

as2
Eléphant du PHP | 132 Messages

07 janv. 2019, 18:54

Merci pour vos réponses.
Mais mon niveau informatique n'est pas très élevé...
Donc je comprends pas tout.
Une librairie je sais à peine ce que c'est, et en plus la page phpword est en anglais et je parle pas cette langue.
Mais bon, apparement il s'agirait de tout coder dés le départ, exemple une ligne en souligné aurait son propre code ?
çà va être galère à faire.
Je voyais pas çà comme çà.
Moi je pensais créer ma page (ce qui n'est pas encore fait je précise), qui afficherait par exemple les données dans des tableaux, avec une boucle si vous voulez, et quand la page (énorme) est créée j'appuye sur une touche magique et çà me crée un document word - en respectant la forme -
Car j'ai essayé des bon vieux copié-collé, çà respecte rien.

Je sais même pas ce qu'est un css.

Ni une imprimante pdf, qui pourrait pourtant être ma solution ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

07 janv. 2019, 21:15

Non, l'un et l'autre peuvent lire du HTML en entrée et le transformer en PDF ou en .docx

Voici l'exemple pour PHPword :
https://github.com/PHPOffice/PHPWord/bl ... adHTML.php

Pour wkhtmltopdf, un point important est qu'il faut installer un exécutable sur ton hébergement pour que ça fonctionne donc il faut un serveur dédié ou un serveur virtuel. Si tu es sur une offre mutualisé 1er prix, ça ne fonctionnera pas.
https://wkhtmltopdf.org/

Toutefois si tu ne lis pas l'anglais et n'est pas un développeur PHP, cela va te demander pas mal de boulot il faut en être conscient.
A défaut, il y a des solutions clé-en-main pas très cher voir gratuites si tu n'as pas de gros besoins :
https://pdflayer.com
http://pdfmyurl.com/html-to-pdf-api
https://restpack.io/html2pdf
Quand tout le reste a échoué, lisez le mode d'emploi...

as2
Eléphant du PHP | 132 Messages

08 janv. 2019, 18:17

Merci mais je crains que je vais laisser tomber...
Le PDF déjà : non, car la conversion ne concernerait qu'une partie du livre, après je tiens à apporter du texte (quand même), donc je peux le faire qu'avec word.

PHPword : je comprends pas.
qu'Est-ce qu'une librairie, où la télécharger et l'installer ?
Dans l'exemple que tu donnes, je vois mal où prendre la source à convertir et comment sera le fichier converti, je vois pas de .doc

J'avoue venir peu ici, donc je comprends que vous voulez pas trop vous attarder sur mon sort.
Alors juste pour me présenter : j'ai créé un site en php+Mysql en 2008 et il existe toujours, je le mets régulièrement à jour, mais je donnerai pas l'url ici.
Donc j'ai quelques notions de base.
Pour mon livre je veux travailler en local par sur l'hebergeur.
J'utilise wampserver 2.1

Bref, si vous avez le courage de m'expliquer (lentement), j'essaierai de faire un effort de compréhension :)
Sinon, tant pis, on laisse tomber.


A pi tiens tant qu'on y est, pour transferer mon site chez free, j'utilise FileZilla 3.19.0 mais çà merdouille depuis des années, genre "vous ne pouvez pas avoir deux connexions simultanées", vous auriez pas autre chose à la place ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

08 janv. 2019, 19:19

Merci mais je crains que je vais laisser tomber...
Le PDF déjà : non, car la conversion ne concernerait qu'une partie du livre, après je tiens à apporter du texte (quand même), donc je peux le faire qu'avec word.
Pour rappel la question que tu as posée dans ton message initiale était : "comment convertir [du HTML] en word ou PDF ???" :D
C'est pour ça qu'on te propose les 2 solutions ^^


Mais maintenant que j'ai compris que c'est juste pour le faire une seule fois alors il y a beaucoup plus simple !
Il te suffit de générer ta page HTML et ensuite tu as juste à faire clic droit, sélectionner tout, copier, et tu colles sous Word :D
Je plaisante pas, ça devrait marcher très bien pour tes titres, paragraphes, images et tableaux...
Il ne faut pas faire de la mise en page trop compliquée en HTML mais une page en pure HTML avec uniquement les balises de bases <h1...h6> <p> <br> <table> <strong> <i> <em> <img> ça passe très bien en copier-coller

A pi tiens tant qu'on y est, pour transferer mon site chez free, j'utilise FileZilla 3.19.0 mais çà merdouille depuis des années, genre "vous ne pouvez pas avoir deux connexions simultanées", vous auriez pas autre chose à la place ?
Ça se règle simplement dans les paramètres de Filezilla. ;-)

Je t'ai fait une capture d'écran : https://i.imgur.com/nTnTKZx.png
Quand tout le reste a échoué, lisez le mode d'emploi...

as2
Eléphant du PHP | 132 Messages

10 janv. 2019, 14:46

Mais maintenant que j'ai compris que c'est juste pour le faire une seule fois alors il y a beaucoup plus simple !
Il te suffit de générer ta page HTML et ensuite tu as juste à faire clic droit, sélectionner tout, copier, et tu colles sous Word :D
Je plaisante pas, ça devrait marcher très bien pour tes titres, paragraphes, images et tableaux...
Il ne faut pas faire de la mise en page trop compliquée en HTML mais une page en pure HTML avec uniquement les balises de bases <h1...h6> <p> <br> <table> <strong> <i> <em> <img> ça passe très bien en copier-coller
Non, malheureusement, mon site tel qu'il est , j'ai beau sélectionner tout, copier, coller dans word et choisir importer le document, çà ne donne pas du tout le même résultat.
J'avais bien sûr essayer avant de poster ma question.
Mais çà dépend peut-être de la structure un peu compliquée du site que j'avais prise à l'époque sur le net, je sais plus comment on appelle ces pages html "clé en main".

Mais au fond , tu as raison, dans le sens où tu m'incite à créer le "livre" simplement.
Mais par contre je tiens à utiliser des tableaux, car c'est le seul moyen que je connaisse en HTML pour aligner du texte, j'ai jamais osé m'atteler au feuilles de style.
Donc j'utilise la bonne vieille balise <table>.

Je vais donc tenter - enfin - d'écrire mon script pour générer les pages d'après la BDD.
Je vous tiens au courant, mais çà risque d'être long à cause de mon emploi du temps pas toujours disponible comme je le souhaite.

as2
Eléphant du PHP | 132 Messages

10 janv. 2019, 14:56


Ça se règle simplement dans les paramètres de Filezilla. ;-)
Oui, j'ai jamais pensé à allez voir dans les paramètres.
J'ai changé des trucs genre j'ai mis 9 connexions simultannées, et temps d'attente 0 seconde entre 2 tentatives.
Mais çà merde toujours.
voilà le message :

Réponse : 421 Vous ne pouvez avoir que 2 connexions simultannees
Erreur : Impossible d'établir une connexion au serveur
Statut : Connexion interrompue par le serveur

çà vient peut être du serveur free ?

Mammouth du PHP | 1967 Messages

10 janv. 2019, 15:59

Je te conseillerai de te limité a des balises html simple, y compris table si tu veux afficher un tableau
ne pas te soucier de l'apparence, mais assure un code simple le copié collé vers word gardera lke niveaux des titres et texte, tu pourras alors t'occuper de la mise en page en word.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

10 janv. 2019, 18:59

J'ai changé des trucs genre j'ai mis 9 connexions simultannées, et temps d'attente 0 seconde entre 2 tentatives.
Mais çà merde toujours.
voilà le message :

Réponse : 421 Vous ne pouvez avoir que 2 connexions simultannees
Le serveur de Free te dit que tu ne peux avoir que 2 connexions simultanées et toi tu essayes de lui en faire passer 9 ?!!!
C'est pas très logique ! :-D
Mets ce paramètre à 1 et regarde si tu as toujours un message d'erreur...
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

10 janv. 2019, 19:09

Mais çà dépend peut-être de la structure un peu compliquée du site que j'avais prise à l'époque sur le net, je sais plus comment on appelle ces pages html "clé en main".
Le HTML n'est pas le meilleur outil pour faire de la mise en page de document à imprimer, surtout si tu ne maitrise pas le CSS, ça devient alors le pire outil pour le faire :-D

Ce que je te recommande est de ne générer que le contenu en HTML et le minimum de mise en forme (images, niveaux de titre, mise en gras et liens par exemple).
Ensuite la mise en forme tu la fais dans Word.
Mais au fond , tu as raison, dans le sens où tu m'incite à créer le "livre" simplement.
Mais par contre je tiens à utiliser des tableaux, car c'est le seul moyen que je connaisse en HTML pour aligner du texte, j'ai jamais osé m'atteler au feuilles de style.
Donc j'utilise la bonne vieille balise <table>.
Surtout pas de mise en forme avec des tableaux.
N'utilise des tableaux pour des tableaux de données mais pas pour la mise en forme.
Quand tout le reste a échoué, lisez le mode d'emploi...

as2
Eléphant du PHP | 132 Messages

10 janv. 2019, 23:47

J'ai changé des trucs genre j'ai mis 9 connexions simultannées, et temps d'attente 0 seconde entre 2 tentatives.
Mais çà merde toujours.
voilà le message :

Réponse : 421 Vous ne pouvez avoir que 2 connexions simultannees
Le serveur de Free te dit que tu ne peux avoir que 2 connexions simultanées et toi tu essayes de lui en faire passer 9 ?!!!
C'est pas très logique ! :-D
Mets ce paramètre à 1 et regarde si tu as toujours un message d'erreur...
Effectivement, çà à l'air d'aller mieux avec le paramètre à 1.
Je vais voir à l'usage si çà fonctionne dans la durée.
Si c'est le cas, çà va changer ma vie :)
Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

11 janv. 2019, 00:24

Si c'est le cas, çà va changer ma vie :)
On est là pour ça sur PHPfrance ! 8-)
Quand tout le reste a échoué, lisez le mode d'emploi...