tutorial - Uso de XSL-FO, CSS3 en lugar de CSS2 para crear documentos paginados como PDF?
qué es una hoja de estilo en css (5)
¡Gracias a todos los comentarios y respuestas!
Ahora, 2014, pasé más de 1,5 años de mi publicación (17 de mayo de 12), es hora de consolidar: ninguna respuesta fue, para mí, una "respuesta completa", pero todas las respuestas (ver Nenotlep y Alex) contribuyeron a formar un gran imagen. Mi principal motivación ahora, consolidarme, es la noticia de @mzjn (aquí) de 2013-11.
XSL-FO está muriendo oficialmente
El sábado, 2013-11-02, Liam RE Quin wrote : "Cerramos el grupo de trabajo porque no participaba suficiente gente" , W3C XML Activity Lead, sobre el fracaso de la continuidad de XSL-FO 2.0 . (ver una copia mejor aquí ).
La última actualización del Borrador de Trabajo fue en enero de 2012, y ahora se confirmó: W3C deja de desarrollar XSL-2 .
¿Por qué? Será reemplazado por CSS3-page , ver abajo.
PD: para discutir la "declaración oficial", use https://stackoverflow.com/a/21345449/287948
CSS3 está creciendo oficialmente
La CSS3-page estándar de CSS3-page es un borrador, pero muchas aplicaciones, como PrinceXML y AntennaHouse Formatter v6 demostraron que está lista (!); y, el esperado lanzamiento de HTML5 para 2014 está llevando a cabo el lanzamiento previsto CSS3.
Entonces, entiendo que para W3C, CSS3-page haga todo lo que necesite para expresar buenas impresiones y buenos PDF .
Otras motivaciones
Un día, en un futuro lejano ... PDF morirá, es complejo y no forma parte de la familia XML ni de las inversiones del W3C, y muchos afirman que EPUB lo reemplazará. Esta es otra buena motivación: se imprimirán los lectores de tabletas y los navegadores de PC (HTML, XHTML y EPUB) y PDF. Por lo tanto, PDF no será necesario ... Y, para este día, la única necesidad estándar, por ej. Proyecto de impresión Webkit , será el estándar de página CSS3 .
CSS3 es el punto clave en dos asuntos estratégicos: 1) generar buenos PDF a partir de contenidos XML o HTML; 2) para reemplazar PDF.
NOTA: otras actualizaciones de 2014 para los enlaces de la pregunta: wkHtmlToPDF ya está aquí . Acerca de "nuevos textos", ahora tenemos muchos, vea ej. Construyendo libros con CSS3 .
Una respuesta actualizada para programadores, para la pregunta de esta página, ¿Por qué utilizar XSL-FO en lugar de CSS2 para transformar HTML en un buen PDF?
Si va más allá e implementa un nuevo sistema para publicación XML , no hay una buena razón para usar XSL-FO . RESUMIENDO:
XSL-FO es una tecnología muerta en la actualidad, solo utilizada por empresas de nicho, para dar mantenimiento a sistemas heredados en grandes compañías editoriales, como Elsevier ... La mayoría de los escritores / lectores de Stackoverflow provienen de pequeñas y medianas empresas. Empresas como O''Reilly Media, Inc. ya usan CSS3 para imprimir .
CSS3 reemplazará CSS2, cubriendo todos los vacíos (y miedos como @ AlexS) de CSS2 .
hoy (2014), como puede comprobar por Google o mis enlaces (ver PrinceXML v9 y AntennaHouse Formatter v6), tenemos algunos buenos programas para presentar contenido con CSS2 o CSS3 .
como dice @bytebuster, "CSS es mucho más fácil de desarrollar" (¡y más fácil de aprender!).
como dije antes, CSS3 no está aislado, es una parte de la familia "XML / HTML / SVG".
es mucho más barato desarrollar "plantillas HTML + CSS" (costo por hora de un diseñador web estándar que realiza una tarea sencilla), que "plantillas XSL-FO" (costo por hora de un profesional raro en una tarea compleja).
....
Noticias...
Enero de 2016, ¡el estándar definitivo de CSS3 ya viene!
Acerca de los estándares W3C: la antigua "página css" fue reemplazada por "css-break" y "media paginada" por "fragmentación" ... Ahora es una Recomendación candidata, ver https://www.w3.org/TR/css-break-3
Hay muchos textos antiguos, como este libro de 2002 , que indican que debemos usar "CSS para Web" y "XSL-FO para imprimir". Creo que en la actualidad (2012) podemos, finalmente, usar CSS con motores de renderizado que entienden los medios paginados de CSS2 y algo de CSS3 ... ¿Pero dónde están los "nuevos textos", el consenso de los programadores, y la inversión de los sofitos?
XSL-FO o "Objetos de formato XSL" (un estándar W3C) fue la tecnología más utilizada para generar documentos PDF, a partir de contenido XML o XHTML. La versión 1.1 de XSL-FO se publicó en 2006, 1.0 en 2001 .
CSS2.1 es de 2011, pero CSS2.0 es un estándar de 1998, revisado en 2008 ... Creo que las edades estándar no son un problema. CSS con HTML, XHTML o XML tienen "el poder de imprimir" : vea herramientas como PrinceXML , el módulo de impresión WebKit (o wkhtmltopdf ), ABCpdf y otros.
Elegir entre CSS y XSL-FO : con CSS2 puede ajustar el texto exactamente a la página de papel, etc. No se trata de paginación, diseños de columnas múltiples, colocar notas al pie, encabezados en ejecución o márgenes de una página ... Ambos, CSS (paginado multimedia) y XSL-FO, son buenos estándares para hacer esto.
PD: hay algunas preguntas / respuestas relacionadas para este contexto, sobre transformación webkit , conversión con PHP y sobre Generación PDF desde HTML . Nadie con una buena respuesta para esta pregunta presentada.
Estoy de acuerdo con algo de lo que ha sido publicado por @Nenotlep. Pero no estoy seguro de si el marcado CSS es tan extenso para documentos paginados como XSL-FO. Pero no lo sabría.
También agregué esta parte a su respuesta porque no pude "comentar" la respuesta.
Hay algo de historia en todo el asunto.
Además, la riqueza de XSL-FO y su curva de aprendizaje y burn-in en los últimos 10 años en el renderizado de FO ha tenido bastante tiempo para "arreglar" más cosas.
Fui responsable de la prueba de concepto y creación de prototipos de un sistema relacionado con Enterprise XML Content para Fortune 20 en 2003.
Una de las piezas de ese sistema tenía que generar versiones en PDF, Word, X / HTML de documentos sobre la marcha a medida que las personas cambiaban, agregaban y modificaban el contenido XML.
Incluso XSL-FO> PDF y Word-ML tenían un montón de problemas iniciales en ese momento.
Estos fueron inherentes debido a la siguiente razón:
- Objetivos y capacidades originales y nuevos de los lenguajes Markup & Styling
- Capacidad y limitaciones del componente de representación final para representar con precisión el marcado dado (es decir, componente XSL-FO a PDF o X / HTML en pantalla mediante el navegador web)
Han pasado 10 años desde que he trabajado frecuentemente con XSL-FO / HTML / CSS, pero los temas anteriores fueron interesantes para debatir con el mundo de Gods of XML / XSL en ese momento (Dave Pawson, Michael Kay, Wendell Piez, etc. )
Es muy posible que todas las marcas representativas que XSL-FO tenía sobre CSS para la salida paginada, ahora (2013) posiblemente se repliquen en CSS3 y se reproduzcan de manera apropiada.
Espero que esto ayude.
Edición de 2017:
Aparentemente CSS todavía está jugando a ponerse al día de alguna manera y recuerdo haber tenido la mayor parte de esto en 2003 - Eso es 14 años y en la tecnología web eso es un eón demasiado lento :).
Por lo que sé, no se pueden generar gráficos SVG o códigos de barras SVG con CSS.
Una posible razón para utilizar CSS en lugar de XSL-FO en el futuro es que el Grupo de trabajo de impresión y diseño de página XML en W3C ya no está activo. No hubo suficiente interés para sostener este grupo de trabajo. El grupo publicó un borrador de trabajo de XSL 2.0 a principios de 2012, pero ahora parece bastante improbable que alguna vez surja una recomendación actualizada del W3C.
Hay un hilo muy reciente en la lista de correo de XSL-List sobre las razones para cerrar el grupo de trabajo y sobre el futuro de XSL-FO vs. CSS. Ver http://markmail.org/thread/65j2ah2kulcp35fm .
Y, por cierto, aunque este es un tema interesante, no estoy seguro de si la pregunta es adecuada para . En mi humilde opinión, es más una invitación abierta para discutir algo más que una pregunta sobre un problema específico, práctico y responsable .
Actualizado el 01.10.2015
Solía hacer CSS a PDF (wkhtmltopdf) y XSL-FO a PDF y prefiero CSS, pero hay muchos problemas con él. IMO, el mejor procesador de CSS / HTML a PDF es wkhtmltopdf, pero tiene muchos problemas como problemas de calidad de impresión, problemas de página, coloración CMYK, posicionamiento exacto y representación en pantalla completa.
Requisitos como "mover esa caja 1.8 mm hacia la derecha y hacia arriba para que toque la parte superior del papel" y "necesitamos que la última página sea una mesa sin márgenes 100% amplia" son bastante factibles en XSL-FO pero en CSS es demasiado aterrador incluso para considerar. En algunos casos, CSS no lo corta como un software lo suficientemente bueno como para que no exista, incluso si las etiquetas lo hacen. Incluso wkhtmltopdf (0.11, no estoy seguro de más adelante) utiliza XSLT al representar el TOC y realmente no admite @page
.
No puedo hablar por PrinceXML porque aunque se ve muy bien, sé de antemano que la etiqueta de precio sería imposible, así que no es una opción. Sospecho que esto es cierto para muchos desarrolladores y compañías.
Si hubiera un mejor software para hacer el renderizado y más usuarios, realmente creo que CSS sería una mejor opción, ya que es mucho más fácil de escribir (tanto css como fuente (x) html) y hay muchos editores por ahí. Es un poco como el viejo debate entre Linux y Windows: IMO Linux es más fácil de usar pero carece del software, la experiencia existente y el soporte que a menudo se requiere.
Y para hacerse eco de los comentarios, el material fuente siempre es un problema con CSS. CSS para XML es un territorio un poco desconocido y casi todo en todas partes es XML. Desafortunadamente. Tengo una aversión severa para XML a pesar de que es prácticamente más útil que (X) HTML.