texto - leer y escribir archivos en c#
Conversión entre formatos de documento en C# (4)
Primero probaría XSLT . Cuando habla de formatear documentos XML (y eso es más o menos de lo que está hablando), esa es la herramienta diseñada para hacerlo.
De Wiki :
"La idea general detrás del uso de XSL-FO es que el usuario escribe un documento, no en FO, sino en un lenguaje XML. XHTML, DocBook y TEI son todas posibilidades, pero podría ser cualquier lenguaje XML. Luego, el usuario obtiene una transformación XSLT, ya sea escribiendo uno ellos mismos o encontrando uno para el tipo de documento en cuestión. Esta transformación XSLT convierte el XML en XSL-FO. "
Necesita una transformación XSLT para HTML a XSL-FO. No estoy seguro de dónde conseguir uno, pero aparentemente el concepto no es ajeno.
¿Cuál es la mejor forma de convertir HTML, XML y XSL-FO en C #?
Ya tengo el HTML (conectado desde FCKEditor) y me gustaría imprimir un PDF (tengo un convertidor XSL-> PDF). Parece que no puedo encontrar una biblioteca que convierta de HTML a nada compatible con XSL.
Un año o dos atrás, tuve que generar archivos PDF de un programa C ++ / C #. Al final me decidí a lanzar Apache''s Java FOP como un proceso separado para hacer la conversión. La experiencia con xsl-fo no fue agradable. En ese momento, no parecía haber una sola herramienta que hubiera implementado xsl-fo por completo. Las herramientas tendían a elegir un subconjunto de la especificación y piratear eso. Dada la creciente complejidad de xsl-fo, estoy comenzando a preguntarme si alguna vez habrá una implementación completa.
FOP tendía a fallar y se empleaba un tiempo considerable en resolver los problemas. XSLT y XPaths fueron difíciles de aprender. Pasaron unas semanas antes de ver más allá de la verborrea y poder hacer las cosas rápidamente. Sin embargo, creo que nunca entendí por completo a xsl-fo. Hace que el modelo html y css se vea como el juguete de un niño. Afortunadamente, los pdfs generan y no tienen demasiados problemas. :-)
De todos modos, la tarea en cuestión: generar pdfs a partir de la salida xhtml de FCKEditor.
Parece que no puedo encontrar una biblioteca que convierta de HTML a nada compatible con XSL.
Je. Sí, eso es porque no hay uno, y probablemente no sea un convertidor html to xsl-fo que sea bueno. Tal convertidor tiene algunas cosas en contra: la complejidad de los navegadores y la complejidad de xsl-fo. Para que un convertidor de este tipo maneje un documento html promedio, necesita las agallas de un navegador web: el diseño, soporte CSS probablemente incluso JavaScript. Luego tiene que tomar la página representada, y descubrir qué es lo que xsl-fo necesita para obtener algo similar, y se ajusta dentro de las restricciones paginados de xsl-fo.
Es como el problema de hacer un visor de palabras: sin volver a implementar muchas palabras, apesta la mayor parte del tiempo porque no se ve igual.
¿Entonces que puedes hacer? Bueno, tener un pequeño subconjunto de html para trabajar es un buen comienzo. Esperemos que la salida de FCKEditor sea xhtml, ya que obtener html en xml es un mundo de dolor en sí mismo (para lo cual puede ser útil). A continuación, a menos que un alma pobre ya haya creado un FCKEditor xhtml -> xsl-fo xslt para su implementación de xsl-fo, tendrá que crear uno. Eso implica aprender xsl-fo, xslt y xpath. En mi experiencia, tomará algunas semanas y será una solución improvisada.
Para comenzar con xsl-fo, encontré útiles los siguientes enlaces:
- XSL-FOTutorial
- Estándar XSL
- Página de cumplimiento de Apache FOP
- XSL-FO: ¿listo para el horario de máxima audiencia? describe el problema xsl-fo intenta resolver
- Para tres entradas rápidas ver a , byc
Entonces, ¿qué es todo esto xsl-fo, xslt y todo lo demás? El XSL-FO: ¿listo para el horario de máxima audiencia? lo explica como:
La familia de idiomas de hojas de estilo extensible (XSL) XSL es una familia de recomendaciones para definir la transformación y presentación de documentos XML. Consiste en tres partes:
- Transformaciones XSL (XSLT), un lenguaje para transformar XML
- XML Path Language (XPath), un lenguaje de expresión utilizado por XSLT para acceder o referirse a partes de un documento XML. (XPath también es utilizado por la especificación XML Linking)
- Objetos de formato XSL (XSL-FO), un vocabulario XML para especificar la semántica de formateo
¿Mi consejo? Correr. Encuentra otro fuera. Encuentra otra solución Genere archivos LaTeX y conviértalos en pdfs. Genera algo más Haga documentos de Word e imprímalos usando PDFCreator . Genera imágenes Controla Firefox para imprimir páginas como pdfs. Encuentra lejos para evitar necesitar pdfs en absoluto. Cualquier cosa, siempre y cuando no combata html, xsl-fo, FOP, xslt y xpath.
PD: avíseme si necesita ayuda. :-)
Intercambio muy informativo aquí. He creado una aplicación web con ASP.NET y C # .NET para mi negocio de contratos de TI. Uno de los principales objetivos de la aplicación web es generar currículos personalizados en varios formatos. Guardo el contenido de mi currículum en una base de datos de SQL Server y creo el XML en su mayoría sin procesar en un método C #. Usé XSLT para convertir a HTML y con un poco de akwardness finalmente obtuve un currículum presentable básico. Mi próximo objetivo es obtener una versión imprimible del currículum. Obtuve un libro en XML de la biblioteca y retoqué un poco el XSLT. Luego llegué al capítulo XSL-FO. Fue entonces cuando el iceberg golpeó. Quería asumir el reto de tener una opción de PDF que sería una opción de menú y hacer una transición a XSLT a XSL-FO a PDF. La cosa es que todas las recomendaciones del libro tenían referencias a productos comerciales. Simplemente no vale la pena el dinero ya que el PDF no es necesario. Miré Altova XMLSpy en una pista de 30 días, pero tan pronto como probé mi primera transformación de un archivo de ejemplo XSL-FO recibí un mensaje que decía que necesitaba descargar más software. Esa descarga estaba tomando para siempre desde su sitio, así que renuncié y eliminé el software. Las versiones gratuitas del software comercial de otros proveedores no tienen la opción de transformación. Después de leer las notas aquí, he decidido evitar el XSL-FO. Voy a intentar obtener una versión de MS Word ahora y si mis clientes quieren convertirla a PDF, pueden pagar la versión de creación de PDF de Adobe.
Esta es una pregunta pendiente, pero me gustaría añadir para futuros lectores que la versión actual de FCKEditor (CKEditor ahora) es mejor para producir XHTML de alta calidad (incluso es posible un conjunto de etiquetas definidas por el usuario).
He solucionado problemas similares al no usar XSL-FO pero usando un convertidor (X) HTML a PDF que procesa el PDF desde su fuente sin las Transformaciones XSL. Valoro el XHTML producido y soluciono los problemas poco comunes con HtmlAgilityPack, de esa manera lo alejaré de las complejidades HTML no semánticas. Hay muchos convertidores para elegir, mi elección es wkhtmltopdf (si el dinero no es un problema, PrinceXML es una alternativa superior; me encantaría usarlo, pero es demasiado caro).