c# .net formatting printing-web-page

c# - ¿Qué tecnología de generación de imágenes de página debería usar?



.net formatting (13)

¿Has pensado en usar PostScript?

ps: ¿qué tipo de encabezados / pies de página necesitas? ¿tus personalizados para poner páginas en el medio? si es así, postscript o PDF es probablemente el mejor. pero será muy difícil crear el convertidor xhtml + css a pdf. básicamente, necesitarías tener una biblioteca que pueda analizar tanto xhtml como css (+ cualquier objeto como imágenes, flash, etc.)

Estoy construyendo una aplicación de escritorio ahora que presenta su salida legible para humanos como XHTML que se muestra en un control WebBrowser. Eventualmente, esta salida tendrá que convertirse de un archivo XHTML a una imagen de documento en un sistema de imágenes. A diferencia de los documentos XHTML, la imagen del documento debe dividirse en páginas físicas; Además, y esta es la parte que me está matando, debe haber encabezados y pies de página en estas páginas.

Por mucho que me gustaría, no puedo simplemente hacer que WebBrowser imprima en un archivo; las opciones de encabezado / pie de página que admite no son lo suficientemente sofisticadas. Así que estoy tratando de descubrir cuál es la tecnología correcta para generar estas imágenes.

Me parece probable (aunque no es obligatorio) que lo que terminaré haciendo es producir versiones en PDF de los documentos HTML (para poder agregar encabezados y pies de página) y luego renderizar los PDF como TIFF, que es el formato definitivo. que el sistema de imágenes quiere Entonces, ¿qué estoy considerando?

  • Utilice algún tipo de software de conversión de XHTML a PDF. El problema con esto es que, sin hacer una gran cantidad de evaluaciones y pruebas, no puedo determinar si los productos que he analizado tienen la capacidad de hacer lo que necesito, que es tomar los documentos XHTML existentes, decorarlos con encabezados. y los pies de página y los paginan.

  • Use XSL-FO para generar archivos PDF. Ser un geek XSLT de nivel ninja ayuda aquí (así es como estoy produciendo el XHTML en primer lugar), pero aún parece una solución lenta e incómoda con muchas partes móviles. También esto significa que estoy metiendo un gran programa de Java torpe en el medio de mi agradable sistema .NET limpio, aunque soy bastante adulto para hacer eso si es la respuesta correcta.

  • Use alguna otra tecnología que aún no he pensado, como LaTeX. Tal vez haya alguna herramienta milagrosa de creación de imágenes de página que convierta XHTML directamente en TIFF con encabezados y pies de página. Eso sería ideal.

Mis preocupaciones principales son:

  • Estoy construyendo un producto comercial; cualquiera que sea la tecnología que uso debe ser asequible y compatible. No tiene que ser gratis.

  • No quiero desaparecer por un agujero de conejo durante tres meses golpeando estas cosas para que funcione. Intuitivamente, este parece ser el tipo de espacio problemático en el que puedo perder mucho tiempo simplemente evaluando y rechazando herramientas.

  • Cualquier solución que adopte debe ser relativamente inmune a los cambios de formato en el XHTML. La razón por la que estoy usando XSLT y produciendo XHTML es que los documentos que estoy produciendo se ensamblan dinámicamente usando reglas de negocios que cambian todo el tiempo.

He pasado mucho tiempo buscando alternativas y no he encontrado nada que obviamente sea la respuesta. Pero tal vez una de ustedes, buena persona, ya ha resuelto este problema, y ​​si es así, me gustaría ponerme sobre sus hombros.


Si tiff es su objetivo, este podría ser un enfoque libre y de bajo riesgo:

  1. Use un componente para crear una imagen para una url determinada. No estoy seguro de qué herramienta usamos para él, pero GIYF: Acabo de tropezar con WebPreview de SmallSharpTool que parece hacer el trabajo
  2. Asegúrese de que puede crear una imagen de toda la página, es decir, el área desplazable de todo.
  3. Use ImageMagick para hacer toda la manipulación de la imagen, como cortarla en varias páginas, agregar sus propios encabezados, pies de página y numeración de páginas y conversión a tiff.

He utilizado personalmente las técnicas anteriores por separado en proyectos de C # (aplicaciones de consola y sitios web) con éxito, así que casi puedo garantizar que esto funcionará.


PrinceXML es un convertidor de XHTML / CSS a PDF. Parece que tiene las características que necesita:

  • Encabezados / pies de página, numeración de páginas e impresión dúplex.

Me doy cuenta de que probablemente querrás respuestas más extensas que esta (lo siento, pero no he evaluado el producto), pero sin embargo, ¡espero que ayude!


Todo depende de la importancia de la calidad para los documentos generados. También importa qué otras operaciones necesita hacer con el documento.

Estoy construyendo una aplicación de escritorio ahora que presenta su salida legible para humanos como XHTML que se muestra en un control WebBrowser. Eventualmente, esta salida tendrá que convertirse de un archivo XHTML a una imagen de documento en un sistema de imágenes.

Parece que tu aplicación es una especie de soft-form. Usted genera formularios completos y los guarda.

[...] es necesario que haya encabezados y pies de página en estas páginas.

Esta es la parte facil. Puede usar plantillas y fusionar los datos con la plantilla de encabezado / pie de página estático. Suenas como si estuvieras haciendo VDP. Hm. Vamonos.

No puedo simplemente hacer que WebBrowser imprima en un archivo; las opciones de encabezado / pie de página que admite no son lo suficientemente sofisticadas.

¿Porque? Todo lo que necesitas es un controlador capaz.

Me parece probable (aunque no es obligatorio) que lo que terminaré haciendo es producir versiones en PDF de los documentos HTML

Una vez más, no está claro por qué querría PDF de inmediato. PDF es un formato de intercambio de documentos. No es una PDL per se. PostScript es una opción mucho mejor. Sí, sé que hay cosas como XPS, PCL y otras cosas. Sin embargo, la cantidad de control y calidad de representación que obtiene con la PS es demasiado para arriesgar una solución más barata. Digo más barato, porque también debe tener en cuenta el tipo de impresión que puede aprovechar. Las impresoras PostScript (no las que tienen los RIP clonados) son más costosas en general.

Ahora, de vuelta a tu cosa PDF. Sí, por supuesto, puedes generar PDF. Tiene ciertas ventajas como:

  • Mejor soporte para la transparencia (y en calidad general)
  • Archivo
  • Intercambio
  • Compártalo para su revisión
  • Vista previa / Preflight / Corregir
  • Seguridad
  • Cifrado de transmisión (tanto para seguridad como para la cantidad de datos que transfiere a la impresora)
  • Usa plantillas

Pero recuerde que tiene impresoras para hacer ripeo de PDF nativo? Porque de lo contrario está realizando una conversión de PDF a PS / PCL con pérdida. Y acabas de perder el juego. Lo que me lleva de regreso a PostScript;)


Puedes usar PISA para Python . Utiliza el kit de herramientas de reportlab para generar un pdf desde html (usando html5lib)


Solo mi 2p, pero si eres un ninja XSLT, te sugiero que te quedes con eso. Puede evitar el desagradable programa java mirando nFop que es un puerto C # del proyecto apache FOP. Lo mejor es que simplemente puede tomar el ensamblaje y usar directamente pasando su XML y XSLT para obtener la salida de PDF que desee.

http://sourceforge.net/projects/nfop/

Espero que ayude.


¿De verdad necesitas usar XHTML / navegador web?

He estado en este dilema exacto tratando de generar informes HTML de buen aspecto y la solución que encontré es .... para soltar HTML y usar un generador de informes "real", hay muchos de ellos, todos admiten todo Las opciones de paginación y encabezado / pie de página en las que puede pensar generalmente pueden imprimir en formato PDF y, a veces, directamente en imágenes.

HTML no es la tecnología adecuada para los informes.


También podría intentar usar PDFCreator y simplemente imprimir el documento en PDF. PDFCreator actúa como cualquier impresora normal y utiliza ghostscript para convertir la salida de la impresora a pdf, tiff , jpeg o lo que quieras. Creo que puede cambiar los elementos de encabezado y pie de página a través de la interfaz de COM de IE e imprimir directamente desde IE. PDFCreator tiene ejemplos para diferentes idiomas en la carpeta com del directorio de instalación. Lo he usado y puedo responderlo. Solo Windows.


Use alguna otra tecnología que aún no he pensado, como LaTeX.

TexML , que es semántica LaTeX con sintaxis XML. Para usarlo, puedes crear XSLT, que decoraría tu XHTML con comandos TexML ( ver ejemplo )


Mencionó que su aplicación de escritorio actual exporta los resultados en xhtml. Como xhtml está bien formado xml, debe salirse con la suya usando xsl fo para exportarlo a pdf.

XML -> XSL-FO = PDF

Aquí hay una guía para principiantes: http://www.devx.com/xml/Article/16430

Mi compañía ha utilizado esta técnica en una webaplicación java + capullo para el gobierno holandés.


ExpertPDF HtmlToPdf Converter (www.html-to-pdf.net) debería poder hacer exactamente lo que necesita. Es realmente simple de usar, simplemente haga referencia al ensamblaje en su proyecto y comience a usarlo. He utilizado este producto con gran éxito en un par de proyectos de trabajo.


http://iecapt.sourceforge.net/

Citando desde el sitio web anterior:

IECapt es una pequeña utilidad de línea de comandos para capturar la representación de Internet Explorer de una página web en un archivo de imagen BMP, JPEG o PNG. La versión C ++ también tiene soporte experimental para la salida de gráficos vectoriales de metarchivo mejorado. IECapt está disponible en una versión C ++ y C #.


Editar (2010-11-28 12:30 PM PST) Por favor, haga +1 de esta respuesta si descarga mi código. Noté que mi muestra de Codeplex se ha descargado cientos de veces. El código no es espectacular, pero funciona como un excelente punto de partida, con muchos enlaces para ayudar con la fuente incluida. ¡Gracias! + tom Edit (2009-03-29 9:00 AM PST) Conversión de muestra publicada.
Editar (2009-03-23 ​​12:30 PM PST, publicado en CodePlex) Desarrollé una solución para esto y la publiqué en CodePlex . La versión 2.0 publicada se escribe utilizando el patrón MVPP de WPF. Los archivos TIFF (uno por página) se envían a c: / Temp / XhtmlToTiff. Los formatos XAML y XPS también se crean. Una versión compilada e instalable está disponible en CricketSoft.com

¿Has probado el " Microsoft XPS Document Writer "? Esta es una impresora de solo software que genera resultados paginados de una variedad de fuentes, incluidas las páginas web.

Hay un SDK para trabajar con documentos XPS y documentos Open XML en general. Aquí hay un artículo de How-to de Beth Massi: " Acceder a las partes del documento Open XML con Open XML SDK ".

+ tom