1

Version Actuelle : 3.11 (29/08/2008)

http://sourceforge.net/projects/phphtml2pdf/



[sondage=16113]


Avant de poser une question, vérifiez qu'elle n'a pas encore été posée ....



Coucou à tous,

j'ai mis à disposition il y a peu un convertisseur HTML vers PDF écrit en php4 et utilisant la librairie fpdf.

pour l'instant, il ne gère pas encore tout ce qui est div, positions relatives et autre, mais ca viendra !

n'hésitez pas à me faire des remarques si vous voyez des bugs à corriger !
Ancien pseudo : lolo

2

Cool ! Merci !


Est-ce que c'est compatible php5 ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

3

vi (normalement) car je l'utilise sur des serveurs en PHP4 comme en PHP5
Ancien pseudo : lolo

4

nickel top
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

5

Ton script m'intéresse beaucoup.

M'autoriserai tu à l'utiliser dans le cadre de mon stage pour un intranet en interne? Je citerai ton nom comme il se doit dans mon rapport bien entendu.
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches Meilleur smiley = #helico# Obligatory XKCD

6

bien sur ! je diffuse ce programme sous licence GPL, donc aucun problème wink
Ancien pseudo : lolo

7

OK parfait, je te remercie. Il s'intègrera nikel avec mon sujet de stage qui est aussi sous GPL! smile
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches Meilleur smiley = #helico# Obligatory XKCD

8

Nouvelle version 2.31 disponible


avec pour principale modification une gestion (simplifiée pour l'instant) des feuilles de style CSS !
Ancien pseudo : lolo

9

Excellente nouvelle, je compte intégrer l'export PDF dans mon site intranet la semaine qui vient. Je te tiendrai au courant du déroulement et de la mise en pratique de ta classe! smile
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches Meilleur smiley = #helico# Obligatory XKCD

10

Hello Laurent,
Je trouve ton script très intéressant... good job!

Je suis entrain d'intégrer le script "Dacio´s Print-Pdf-Send-It!" (http://kopicaidej.underground.si/) pour obtenir une version imprimable de mes pages Web.
Ce script permet aussi de recommander les pages Web entre internautes et de convertir la version imprimable des pages en PDF... mais cela nécessite le module PHP "pdflib" qui n'est pas chez mon hébergeur Web!
Donc ton script est la solution idéale smile

J'ai essayé d'intégrer ton script à celui de Dacio... mais cela ne fonctionne pas!
Je ne te cacherai pas que je ne suis pas un expert en PHP, je suis débutant et j'essaye d'apprendre wink
Mon objectif serait d'ajouter un bouton "Enregistrer au format PDF" dans la version imprimable de la page (générée par Dacio), afin d'offrir le choix aux internautes d'imprimer ou de sauvegarder la page Web en PDF.
Il y aurait aussi la possibilité d'ajouter un bouton "Enregistrer au format PDF" sur la page Web initiale (non sa version imprimable), mais cela semble encore plus compliqué!

Est-ce qu'un membre de ce forum aurait une idée de comment faire?
Merci de votre aide,
Chris
tromb Fichier joint : Dacio_print-pdf-send-it-v1.0.zip

11

point tres important : mon script n'est pas fait pour convertir des sites web au format PDF, mais pour faciliter la création de documents PDF comme des factures ou des bon de commande par exemple. Il ne gère absolument pas la totalité des balises HTML et des propriétés CSS
Ancien pseudo : lolo

12

qu'est-ce que tu entends par gestion simplifiée des styles CSS ? (tu prends en charge quels attributs ?)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

13

pour l'instant pas grand chose : text-align, color, background-color, font-size, border, width, fon-weight, text-decoration, text-style, ... je sais plus trop, il faut regarder le fichier styleHTML.class.php ^^
Ancien pseudo : lolo

14

ça prend les images ?
avatar

15

oui : img, b, i, u, span, table, tr, td, th, font, ... et je sais plus quoi d'autre. il faut voir toutes les methodes "o_..." dans la classe html2pdf.Class.php.

pour rajouter une balise, il suffit de creer les methodes "o_NOMBALISE" et "c_NOMBALISE" pour l'ouverture et la fermeture

Regardez les exemples sur le site, ca sera plus simple smile
Ancien pseudo : lolo

16

Nouvelle version 2.35 disponible


j'avais zappé pas mal de bugs sur la gestion des priorités entre styles, c'est corrigé.

Egalement, afin de mieux montrer les possibilités de la librairie, j'ai fait cet exemple : HTML - PDF



Ancien pseudo : lolo

17

top
avatar

18

Afin de répondre à certains mails que j'ai recu : VOS CODES HTML NE SONT PAS VALIDES !!!!

si votre code n'est pas valide, il ne pourra pas être converti...

Exemple totale incorrect :
<TABLE borderColor=#ccffff bgColor=#ccffff >
- les noms des balises doivent être ecrites en minuscules (même si pour le coup html2pdf s'en fout, mais c'est quand meme pas valide pour le W3C)
- les noms des propriétés : idem, en minuscule
- les valeurs des propriétés : entre "" !!!!! bgcolor="#CCFFFF", c'est mieux !
- toute propriété qui peut être passée en style est dépassée (du style les bgcolor, width, et autres trucs du même genre)

donc dans le cas présent, la bonne écriture serait :
<table style="border: solid 1px #CCFFFF; background: #CCFFFF">

de meme, <TD borderColor=#ccffff bgColor=#ccffff><DIV align=center><STRONG>Heure</STRONG></DIV></TD> ne sert à rien, il faut ecrire
<td style="border: solid 1px #CCFFFF; background: #CCFFFF; text-align: center; font-weight: bold">blablabla</td>

en html, moins il y a de balises, plus la génération de la page par le navigateur est rapide. Il en est de même avec html2pdf !

enfi, dernier petit point, voici quelques balises, style, et propriétés qui ne sont pas encore programmées :
div, p, em, strong, sup, sub, ul, ol, li
position, left (et autres), background-image, border-left (et autres)
colspan, rowspan


à la place de <em>, vous pouvez utiliser <i>, ou la propriété css text-style:italic, mais la balise <em> sera bientot rajoutée
à la place de <strong>, vous pouvez utiliser <b>, ou la propriété css font-weight:bold, mais la balise <strong> sera bientot rajoutée
les balises sup, sub, ul, ol, li seront rajoutées sous peu
les balises p et div ne sont pas encore implémentées, et ne le seront pas tout de suite, car je n'en ai pas encore eu besoin dans mes programmes. Mais généralement vous pouvez vous en passer, comme dans l'exemple ci-dessus.
Ancien pseudo : lolo

19

Nouvelle version 2.38 disponible


ajout des balises em, strong, correction de nombreux pb de mise en page, amélioration de la gestion des color et border, de l'incorporation des images dans du texte, ..., ...
Ancien pseudo : lolo

20

c'est dommage pour les div quand meme, mais bon j'imagine que c'est la misere à gérer ^^
avatar

21

Spipu (./18) :
- les noms des balises doivent être ecrites en minuscules (même si pour le coup html2pdf s'en fout, mais c'est quand meme pas valide pour le W3C)

C'est faux. En XHTML, les balises doivent être en minuscules, mais en HTML c'est insensitif à la casse et la forme canonique est en toutes majuscules!
- les noms des propriétés : idem, en minuscule

Idem (sauf que la forme canonique est en minuscules pour les attributs, mais c'est quand-même insensitif à la casse!).
- les valeurs des propriétés : entre "" !!!!! bgcolor="#CCFFFF", c'est mieux !

Dans ce cas, les guillemets sont obligatoires en HTML parce qu'il y a le signe '#', mais:
In certain cases, authors may specify the value of an attribute without any quotation marks. The attribute value may only contain letters (a-z and A-Z), digits (0-9), hyphens (ASCII decimal 45), periods (ASCII decimal 46), underscores (ASCII decimal 95), and colons (ASCII decimal 58). We recommend using quotation marks even when it is possible to eliminate them.

http://www.w3.org/TR/html401/intro/sgmltut.html
- toute propriété qui peut être passée en style est dépassée (du style les bgcolor, width, et autres trucs du même genre)

C'est valide quand-même!
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

22

Kevin Kofler (./21) :
En XHTML, les balises doivent être en minuscules, mais en HTML c'est insensitif à la casse

mais c'est pas une raison pour ne pas prendre de bonnes habitudes, et écrire une fois en minuscule, et une fois en majuscule (comme je le vois souvent)
Kevin Kofler (./21) :
Dans ce cas, les guillemets sont obligatoires en HTML parce qu'il y a le signe '#', mais:
... We recommend using quotation marks even when it is possible to eliminate them.

=> meme remarque
Kevin Kofler (./21) :
C'est valide quand-même!

et idem !

de plus, sur ton lien, ils ouvrent des balises qu'ils ne ferment pas... bravo l'exemple !

c'est pas parce qu'on peut faire n'importe quoi qu'il faut forcement le faire, sous prétexte qu'avant on pouvait ! Je donne des directives pour pas avoir du code pourri, afin qu'il soit le plus compatible possible, et tu viens avec des remarques complètement inutile et hors sujet avec ma lib HTML2PDF, pour en plus donner de mauvaises habitudes aux codeurs débutant ! Donc si c'est pour du non constructif, merci de ne plus poster
Ancien pseudo : lolo

23

Spipu (./22) :
mais c'est pas une raison pour ne pas prendre de bonnes habitudes, et écrire une fois en minuscule, et une fois en majuscule (comme je le vois souvent)

Ça ne change pas que c'est valide, que ton accusation que c'est du code non valide est injustifiée et que ton convertisseur HTML2PDF a intérêt à gérer ça.
... We recommend using quotation marks even when it is possible to eliminate them.
=> meme remarque

Recommend != require.
de plus, sur ton lien, ils ouvrent des balises qu'ils ne ferment pas... bravo l'exemple !

Mon lien est une page de la spécification HTML 4.01 du W3C!

Je te signale qu'il y a des balises en HTML qui n'ont pas besoin d'être fermées! Le fameux /> n'existe pas en HTML, les balises sans contenu n'ont pas besoin d'être fermées, par exemple <BR>. Et d'autres sont fermées automatiquement sous certaines conditions, par exemple <P> et <LI>, comme le dit le document: "Some HTML element types allow authors to omit end tags (e.g., the P and LI element types)." HTML != XHTML. Le HTML n'est pas du XML, c'est du SGML, beaucoup plus flexible.
c'est pas parce qu'on peut faire n'importe quoi qu'il faut forcement le faire, sous prétexte qu'avant on pouvait !

Pas seulement "avant". Le HTML 4.01 est la version actuelle du standard HTML. HTML != XHTML, et le HTML 5 est toujours en développement.
Je donne des directives pour pas avoir du code pourri, afin qu'il soit le plus compatible possible, et tu viens avec des remarques complètement inutile et hors sujet avec ma lib HTML2PDF

Je ne vois pas en quoi c'est hors sujet. Tu nous ponds un convertisseur HTML2PDF sans comprendre le HTML ni les différences entre HTML et XHTML, et tu accuses incorrectement le code de ne pas être valide parce que tu n'as pas envie de le gérer.
pour en plus donner de mauvaises habitudes aux codeurs débutant !

Non, pour montrer ton ignorance du standard HTML.
Donc si c'est pour du non constructif, merci de ne plus poster

C'est constructif, tu as intérêt à gérer ces syntaxes dans ton convertisseur HTML2PDF, parce qu'elles sont du HTML valide.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

24

Spipu (./22) :
de plus, sur ton lien, ils ouvrent des balises qu'ils ne ferment pas... bravo l'exemple !

dans ton exemple aussi tongue je regardais comment tu faisais pour séparer les pages, et apparemment tu définis ton propre tag <page> mais tu le fermes que la deuxième fois cheeky
(cela dit je trouve ça un peu crade, puisque tu parses l'attribut style tu pourrais peut-être mettre une propriété CSS genre "-spipu-page-orientation: landscape; -spipu-background-image: exemple7.png" et puis te contenter d'un div pour regrouper le tout, parce que là ça fait un peu bizarre d'un côté de déprécier les éléments/attributs traditionnels HTML en faveur de la propriété style, et de l'autre de rajouter tes éléments/attributs persos façon HTML old-school)


(et Kevin a raison, tu devrais simplement dire que tu gères un sous-ensemble plus propre de HTML)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

25

Kevin Kofler (./23) :
pour en plus donner de mauvaises habitudes aux codeurs débutant !

Non, pour montrer ton ignorance du standard HTML.
Donc si c'est pour du non constructif, merci de ne plus poster

C'est constructif, tu as intérêt à gérer ces syntaxes dans ton convertisseur HTML2PDF, parce qu'elles sont du HTML valide.


je ne dirais qu'un seul truc, si un mec qui apprend à faire des sites utilise tes conseils, le jour ou il voudra passer ses sites de l'HTML au XHTML, il devrait tout se retaper. Avec mes conseils, il aura juste à rajouter quelques / dans certaines balises comme les <br>... Ne pas fermer des balises parce que le format le "tolère", c'est crade, ne pas mettre de "" parce que le format le tolère c'est crade. C'est comme si en PHP tu utilisait les et "register_global" et "magoc_quotes" : hyper crade, d'autant plus qu'en PHP6 ses possibilités seront supprimées... Bravo la compatibilité si tu veux passer de php4, vers 5 puis 6.... obligé de tout refaire...

alors avant de parler de mon "ignorance" sans connaitre mes réelles compétences, et donc de m'insulter sans raison, essaye un peu de te remettre en cause au lieu de toujours vouloir montrer ta supériorité (réelle ou non) aux autres dans tous les topics ou tu en as l'occasion sur yaronet, et d'en pourrir toutes les discussion.

Et pour info, il vaut mieux omettre certaines informations quand tu formes des personnes, comme je l'ai fait au ./18, au lieu de dire absolument tout, comme tu le fais au ./21, afin de leur faire prendre tout de suite de bonnes habitudes de programmation ou autre... Différence entre ce qu'on peut faire, et ce qu'on doit faire. Faut être PROFESSIONNEL !

sur ce, débat clos sur ce sujet, merci de venir au sujet principal. Si tu veux continuer, ouvre un autre topic, on parlera la-bas.
Ancien pseudo : lolo

26

Spipu (./25) :
Et pour info, il vaut mieux omettre certaines informations quand tu formes des personnes, comme je l'ai fait au ./18, au lieu de dire absolument tout, comme tu le fais au ./21

Je ne suis pas d'accord. Il ne faut pas mentir.

Et tu n'as pas juste omis certaines informations, tu as carrément fourni des informations fausses, genre "les noms des balises doivent être ecrites en minuscules (même si pour le coup html2pdf s'en fout, mais c'est quand meme pas valide pour le W3C)".

Et cette attitude, en plus d'être malhonnête, est totalement contreproductive: les personnes, quand elles "découvriront" ce que tu leur as caché, vont le trouver génial ("super, on peut omettre les balises, ça va plus vite à taper") et se mettre à l'utiliser partout, il vaut mieux expliquer pourquoi ce n'est à ton avis pas une bonne idée de l'utiliser (comme tu l'as fait au ./25 par exemple), pas faire comme si ça n'existait pas.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

27

Spipu (./25) :
sur ce, débat clos sur ce sujet, merci de venir au sujet principal. Si tu veux continuer, ouvre un autre topic, on parlera la-bas.


tu pourrais respecter quand je demande un truc ? ...

[edit] edit car pas poli de ma part...
Ancien pseudo : lolo

28

Kevin Kofler (./26) :
il vaut mieux expliquer pourquoi ce n'est à ton avis pas une bonne idée de l'utiliser (comme tu l'as fait au ./25 par exemple), pas faire comme si ça n'existait pas.


c'est sur... j'aurais du être plus explicite, mais du coup toi aussi dans ce sens pour le ./21 ... tous les 2 fautifs.

bon, pour revenir au sujet
Pollux (./24) :
Spipu (./22) :
de plus, sur ton lien, ils ouvrent des balises qu'ils ne ferment pas... bravo l'exemple !

dans ton exemple aussi tongue.gif je regardais comment tu faisais pour séparer les pages, et apparemment tu définis ton propre tag mais tu le fermes que la deuxième fois mod.gif

aoups, j'avais pas fait attention, ca sera corrigé.
Pollux (./24) :
(cela dit je trouve ça un peu crade, puisque tu parses l'attribut style tu pourrais peut-être mettre une propriété CSS genre "-spipu-page-orientation: landscape; -spipu-background-image: exemple7.png" et puis te contenter d'un div pour regrouper le tout, parce que là ça fait un peu bizarre d'un côté de déprécier les éléments/attributs traditionnels HTML en faveur de la propriété style, et de l'autre de rajouter tes éléments/attributs persos façon HTML old-school)

en fait, au début, j'ai hésité à faire comme ca, puis j'ai décidé de faire à la "old school" car pour moi, définir une nouvelle page, c'est comme définir un tableau, ou autre, c'est une fonction à part entière, avec des propriétés, des styles, et j'ai donc préférer créer cette balise "virtuelle", non W3C. Car par exemple, voici un exemple de définition d'une page :
<page backimg="./exemple7.png" backpos="bottom" backtop="0" backbottom="30" style="font-size: 12px;">
	code de la page
</page>

on peut définit une image de fond (./exemple7.png), sa position (en bas de la page : bottom), les marges spécifiques à appliquée en conséquence pour le contenu (backtop="0" backbottom="30"), et enfin un style propre à toute la page (style="font-size: 12px;").
D'ou cette solution ^^ Je suis d'accord que j'aurais pu tout faire avec de fausses propriétés CSS, mais j'ai pensé que ca allait être rapidement le bordel...
Pollux (./24) :
(et Kevin a raison, tu devrais simplement dire que tu gères un sous-ensemble plus propre de HTML)

il est vrai que le code qu'on doit fournir tient peut-être plus du xHTML que de l'HTML, mais j'ai pris ces "conventions" car elles me semblaient acceptable histoire d'avoir du code propre




Ancien pseudo : lolo

29

nouvelle version 2.39 disponible :
- corrections de quelques bugs
- ajout des propriétés bgcolor, bordercolor
- amélioration de la balise page
- mise à jour et correction des exemples




sinon, pour info, malgré ce qui a été dit plus haut, html2pdf prend depuis le début les balises et les propriétés, qu'elles soient en majuscule ou en minuscule, et que les valeurs soient entre " ou non wink c'est juste que je préfère quand les gens codent de manière stricte, pt de vu compatibilité.

par contre, toujours pas de div, mais il y a toujours moyen de s'en passer, exemple : <td><div style="text-align: center"> => <td style="text-align: center">

Ancien pseudo : lolo

30

nouvelle version 2.50 disponible :
- corrections de quelques bugs (nobreak, marges, ....)
- ajout de nouvelles balises (sup, sub, small, big, ...)
- refonte totale de l'identification des styles CSS : les héritages et autres marchent maintenant

les exemples sont dans le premier post de ce topic. l'exemple 1 et l'exemple 6 représentent le plus les modifications apportées dans cette nouvelle version.
Ancien pseudo : lolo