web-dev-qa-db-fra.com

Utilisation de XSL-FO, CSS3 au lieu de CSS2 pour créer des documents paginés comme PDF?

Il y a beaucoup de vieux textes, comme ce livre de 2002 , déclarant que nous devons utiliser "CSS pour le Web" et "XSL-FO pour l'impression". Je pense que de nos jours (2012), nous pouvons, enfin, utiliser CSS avec des moteurs de rendu qui comprennent support paginé de CSS2 et quelque chose de CSS ... Mais où le "nouveau textes ", le consensus des programmeurs et l'investissement des softhouses?

XSL-FO ou "XSL Formatting Objects" (une norme W3C) était la technologie la plus utilisée pour générer des documents [PDF, à partir de contenu XML ou XHTML. La version 1.1 de XSL-FO a été publiée en 2006, 1.0 en 2001 .

CSS2.1 date de 2011, mais CSS2.0 est une norme de 1998, révisée en 2008 ... Je pense que les âges standard ne sont pas un problème. Les CSS avec HTML, XHTML ou XML ont "la puissance de l'impression" : voir des outils comme PrinceXML , WebKit module d'impression (ou wkhtmltopdf ), ABCpdf et autres.

Choix entre CSS et XSL-FO : avec CSS2, vous pouvez adapter le texte exactement à la page papier, etc. Ce n'est pas une question de pagination, plusieurs colonnes les mises en page, les notes de bas de page, les en-têtes en cours d'exécution ou les marges d'une page ... Le CSS (média paginé) et le XSL-FO sont de bonnes normes pour ce faire.

PS: il y a des questions/réponses liées à ce contexte, à propos de la transformation du kit web , conversion avec PHP et à propos Génération PDF à partir de HTML . Personne avec une bonne réponse pour cette question présentée.

32
Peter Krauss

Merci à tous les commentaires et réponses!

Maintenant, 2014, passé plus d'un an et demi de mon poste (17 mai 12), est le temps de se consolider: aucune réponse n'a été, pour moi, une "réponse complète", mais toutes les réponses (voir Nenotlep et Alex) ont contribué à former un grand image. Ma principale motivation maintenant, pour consolider, est la @ les nouvelles de mzjn (ici) de 2013-11.

XSL-FO est officiellement en train de mourir

Le sam. 2013-11-02, Liam RE Quinécrit : "Nous avons fermé le groupe de travail car il n'y avait pas assez de monde", Lead d'activité XML W3C, sur l'échec de la continuité XSL-FO 2. . (voir un meilleure copie ici ).

La dernière mise à jour du document de travail remonte à janvier 2012 et a maintenant confirmé: W3C arrête de développer XSL-2 .

Pourquoi? Il sera remplacé par page CSS , voir ci-dessous.

PS: pour discuter de la "déclaration officielle", utilisez https://stackoverflow.com/a/21345449/287948

CSS3 s'agrandit officiellement

Le standard page CSS est un brouillon, mais de nombreuses applications, comme PrinceXML v9 et AntennaHouse Formatter v6 ont démontré qu'il était prêt (!); et, le lancement prévu de HTML5 pour 2014 est en cours avec la version prévisionnelle CSS3.

Donc, je comprends que pour le W3C, page CSS3 fait tout ce dont nous avons besoin pour exprimer de bonnes impressions et de bons PDF .

Autres motivations

Un jour, dans un avenir lointain ... PDF sera mort - il est complexe et ne fait pas partie de la famille XML ou des investissements du W3C -, et beaucoup prétendent que EPUB le remplacera. C'est autre bonne motivation: les lecteurs de tablettes et les navigateurs PC imprimeront (HTML, XHTML et EPUB) ainsi que PDF. Donc PDF ne sera pas nécessaire ... Et, pour ce jour, le seul standard besoin de, par exemple projet d'impression Webkit , sera la norme CSS3-page.

CSS3 est le point clé dans deux affaires stratégiques: 1) pour générer une bonne PDF à partir de contenu XML ou HTML; 2) pour remplacer PDF.


REMARQUE: une autre mise à jour de 2014 pour les liens de la question: wkHtmlToPDF est maintenant là . A propos des "nouveaux textes", nous en avons maintenant beaucoup, voir ex. Création de livres avec CSS .



Une réponse mise à jour pour les programmeurs, pour la question de cette page, Pourquoi utiliser XSL-FO au lieu de CSS2, pour transformer HTML en bon PDF?

Si vous allez plus loin et implémentez un nouveau système pour XML-Publishing, il n'y a pas de bonne raison d'utiliser XSL-FO = . RÉSUMANT:

  • XSL-FO est une technologie morte aujourd'hui, uniquement utilisée par des sociétés de niche, pour assurer la maintenance des systèmes hérités dans les grandes sociétés d'édition, comme Elsevier ... La plupart des auteurs/lecteurs de Stackoverflow sont issus de petites et moyennes entreprises. Des entreprises comme O'Reilly Media, Inc. utilisent déjà CSS3 pour l'impression .

  • CSS3 remplacera CSS2, couvrant toutes les lacunes (et les craintes comme @ AlexS) de CSS2.

  • aujourd'hui (2014), comme vous pouvez le vérifier par Google ou mes liens (voir PrinceXML v9 et AntennaHouse Formatter v6), nous avons de bons logiciels pour rendre le contenu avec CSS2 ou CSS3.

  • comme le dit @bytebuster, "CSS est beaucoup plus facile à développer" (et plus facile à apprendre!).

  • comme je le dis plus haut, CSS3 n'est pas isolé, c'est un morceau de la famille "XML/HTML/SVG".

  • est beaucoup moins cher de développer des "modèles HTML + CSS" (coût horaire d'un concepteur de sites Web standard effectuant une tâche simple) que des "modèles XSL-FO" (coût horaire d'un professionnel rare dans une tâche complexe).

  • ....



Nouvelles...

Jan'2016, la norme CSS3 définitive arrive!

À propos des normes W3C: l'ancien "css-page" a été remplacé par "css-break", et "média paginé" à "fragmentation" ... Maintenant, c'est une recommandation de candidat, voir https://www.w3.org/TR/css-break-

30
Peter Krauss

Mis à jour le 01.10.2015

J'avais l'habitude de faire CSS pour PDF (wkhtmltopdf) et XSL-FO pour PDF et je préfère CSS, mais il y a beaucoup de problèmes avec ça. IMO le meilleur CSS/HTML à PDF est wkhtmltopdf, mais il a des tonnes de problèmes comme des problèmes de matériel de qualité d'impression, des problèmes de saut de page, des couleurs CMJN, un positionnement exact et un rendu plein écran.

Des exigences telles que "déplacer cette boîte de 1,8 mm vers la droite et vers le haut afin qu'elle touche le haut du papier" et "nous avons besoin que la dernière page soit un tableau sans marge de 100% de large" sont tous les deux tout à fait réalisables en XSL-FO mais en CSS c'est trop effrayant pour être même considéré. Dans certains cas, CSS ne le coupe tout simplement pas comme un logiciel suffisamment bon pour le rendre n'existe pas, même si les balises existent. Même wkhtmltopdf (0.11, pas sûr de plus tard) utilise XSLT lors du rendu de la table des matières et ne prend pas vraiment en charge @page.

Je ne peux pas parler pour PrinceXML car même si ça a l'air génial, je sais à l'avance que le prix serait impossible, donc ce n'est pas une option - je soupçonne que c'est vrai pour beaucoup de développeurs et d'entreprises.

S'il y avait un meilleur logiciel pour faire le rendu et plus d'utilisateurs, je pense vraiment que CSS serait une meilleure option généralement car il est tellement plus agréable à écrire (à la fois css et source (x) html) et il y a des tonnes d'éditeurs là-bas. C'est un peu comme l'ancien débat Linux vs Windows - IMO Linux est plus agréable à utiliser mais manque du logiciel, de l'expertise existante et du support souvent requis.

Et pour faire écho aux commentaires, le matériel source est toujours un problème avec CSS. CSS for XML est un territoire un peu inexploré et à peu près tout est XML partout. Malheureusement. J'ai une aversion sévère pour XML même s'il est pratiquement beaucoup plus utilisable que (X) HTML.

9
Nenotlep

Une raison possible de miser sur CSS plutôt que sur XSL-FO à l'avenir est que le Groupe de travail sur l'impression et la mise en page XML au W3C n'est plus actif. Il n'y avait pas assez d'intérêt pour soutenir ce groupe de travail. Le groupe a publié un ébauche de travail XSL 2. début 2012, mais il semble maintenant peu probable qu'une recommandation mise à jour du W3C émerge jamais.

Il existe un fil de discussion très récent sur la liste de diffusion XSL-List sur les raisons de la fermeture du groupe de travail et sur l'avenir de XSL-FO par rapport à CSS. Voir http://markmail.org/thread/65j2ah2kulcp35fm .

Et en passant, même si c'est un sujet intéressant, je ne sais pas si la question convient bien à Stack Overflow. À mon humble avis, il s'agit plus d'une invitation ouverte à discuter de quelque chose plutôt que d'une question sur un problème spécifique, pratique et responsable .

4
mzjn

Je suis d'accord avec certains de ce qui a été publié par @Nenotlep. Mais je ne suis pas sûr que le balisage CSS soit encore aussi étendu pour les documents paginés que XSL-FO. Mais je ne le saurais pas.

J'ai également ajouté cette partie à sa réponse car je n'ai pas pu "commenter" la réponse.

Il y a un peu d'histoire dans tout le dossier.

De plus, la richesse de XSL-FO et de sa courbe d'apprentissage et de burn-in au cours des 10 dernières années sur le rendu FO a eu tout un mandat pour obtenir "plus" de choses aplanies.

J'étais responsable de la preuve de concept et du prototypage d'un système lié au contenu XML à l'échelle de l'entreprise pour un Fortune 20 en 2003.

L'un des éléments de ce système devait rendre les versions PDF, Word, X/HTML des documents à la volée lorsque les gens changeaient, ajoutaient et modifiaient du contenu XML.

Même XSL-FO> PDF et Word-ML ont eu un tas de problèmes de dentition à l'époque.

Celles-ci étaient inhérentes pour la raison suivante:

  • Objectifs et capacités originaux et nouveaux des langages de balisage et de style
  • Capacité et limites du composant de rendu final à représenter avec précision le balisage donné (c'est-à-dire XSL-FO à PDF ou X/HTML à l'écran via le navigateur Web)

Cela fait 10 ans que je n'ai pas été souvent familiarisé avec XSL-FO/HTML/CSS, mais les questions ci-dessus étaient intéressantes à discuter avec les dieux du monde XML/XSL à l'époque (Dave Pawson, Michael Kay, Wendell Piez, etc. )

Il est tout à fait possible que tout le balisage représentatif que XSL-FO avait sur CSS pour la sortie paginée, soit maintenant (2013) éventuellement répliqué dans CSS3 et soit rendu de manière appropriée.

J'espère que ça aide.

Édition 2017:

Apparemment, CSS joue encore du rattrapage à certains égards et je me souviens avoir eu la plupart de cela en 2003 - Cela fait 14 ans et dans la technologie Web, c'est un eon trop lent :).

https://Twitter.com/t_machine_org/status/917025348646199297

enter image description here

3
Alex S