asp.net - tag - ¿Cómo hago una impresión avanzada desde una aplicación web?
tag helpers asp net core (9)
He estado investigando opciones para imprimir datos similares a informes a través de una aplicación web. Algunas opciones que son viables son escribir archivos PDF, Excel XML, descargar HTML a Excel o usar una herramienta como activePDF webGrabber. Supongo que la pregunta es, ¿cuáles son algunas soluciones que dan control sobre la impresión desde un navegador (IE en mi caso) sin embargo, no tiene un gran tiempo de desarrollo. Aunque no tengo experiencia con él, he visto un código horrible para generar archivos PDF.
Las características que estoy buscando en particular son imprimir paisaje o retrato sin la intervención del usuario. Además, tener control sobre el estilo básico es importante para traducir la apariencia básica de la aplicación web al formato impreso.
Cualquier consejo (especialmente por experiencia) es apreciado.
Al escuchar lo que otros han dicho, nunca vas a lograr que el navegador imprima como quieras. Hablando desde la experiencia, el tipo de medios impresos CSS parece que funcionará, pero realmente nunca hace el trabajo, especialmente si necesita trabajar en más de un navegador (y dado que estoy incluyendo varias versiones de IE como diferentes navegadores). , Creo que todos los sitios web terminan necesitando serlo.)
Creo que la mejor manera es construir dinámicamente archivos PDF sobre la marcha. Encuentre un paquete PDF que le guste / pueda pagar para su plataforma y ejecute con él. Confía en mí, te alegrarás de haberlo hecho.
Como ya he preguntado aquí y lo he descubierto por las malas, no obtendrá resultados de impresión fiables y precisos dentro del navegador. Incluso si se trata de una aplicación de intranet que se le ha prometido que solo debe funcionar con IE7, IE8 estará disponible pronto y luego se permitirá Firefox y toda su cuidadosa microgestión de CSS será en vano (¿sueno amargo?).
La solución más prospectiva es morder la bala y generar archivos PDF. Las herramientas que mencionaste son buenas. También debería mirar iText e iTextSharp . Una vez que lo domine, hacer los diseños de PDF no es más difícil que HTML y CSS y sabrá que los resultados se imprimirán correctamente en la computadora de todos, el navegador de todos y la impresora de todos. Actualmente estoy trabajando con iTextSharp (no terminado todavía, pero aún estoy aprendiendo y experimentando).
No he encontrado formas confiables de controlar las opciones de impresión desde dentro de una página, por lo que depender de que los usuarios cambien de vertical a horizontal o establecer o ajustar los márgenes o desactivar los encabezados y pies de página de impresión simplemente no funciona en el A largo plazo: terminarás molestándolos y creando más dolores de cabeza cuando no pueden (o simplemente no) seguir las instrucciones.
La barra lateral "Preguntas relacionadas" es muy útil. Vi estas preguntas sobre el control de la impresora desde la página web (ambas con respuestas que equivalen a "no se puede"):
Depende de si su base de clientes esperada es conocida o desconocida. Si desea permitir que ''cualquiera'' genere documentos imprimibles, entonces estoy de acuerdo con otros en que la ruta PDF es buena para bajar.
Hemos tenido éxito utilizando PDFLib para crear documentos PDF atractivos. Usando sus módulos del lado del servidor puede hacer que un diseñador cree su documento en InDesign o Illustrator, y luego caerá programáticamente en los campos dinámicos en la parte superior (incluso usando Acrobat para colocar los campos)
Es un poco más complicado para informes y datos de filas dinámicas, pero se puede hacer.
Para realmente imprimir: si está creando una aplicación cuando se conoce su base de usuarios (por ejemplo, un entorno de oficina), puede considerar una aplicación de impresión de etiquetas como BarTender . Puede hacer que el servidor web llame a trabajos de impresión a través de una API o hacer que la aplicación BarTender consulte la aplicación para nuevos trabajos. Útil para aplicaciones web donde desea presionar ''Imprimir'' en el sitio y hacer que la impresora comience a imprimir (sin intervención del otro usuario) ya que el servidor está realmente imprimiendo, no el cliente.
Funciona solo para IE:
http://www.meadroid.com/scriptx/index.asp
Control absoluto para aquellos que necesitan imprimir documentos html desde computadoras cliente y servidor que ejecutan el navegador Internet Explorer de Microsoft.
Un subconjunto básico de la funcionalidad de impresión ScriptX - configuración de encabezado y pie de página, orientación impresa, control aproximado de los márgenes y una ventana del navegador / comando de impresión de cuadros - está disponible sin cargo y es libremente distribuible. La funcionalidad de impresión avanzada no es gratuita. Los documentos habilitados para ScriptX deben referirse a una licencia de publicación válida para que funcione la impresión avanzada.
He usado y tenido suerte con iTextSharp en una aplicación C #. Se necesita un poco de trabajo, pero si tiene experiencia en gráficos, todo tiene sentido y el PDF puede verse muy bien (e imprimirse bien).
http://itextsharp.sourceforge.net/
Si desea que el código no genere PDF generoso, ¡asegúrese de escribir un buen código PDF! Por ejemplo, escriba un código realmente modular con muchas clases en memoria que combine (como Lego) para representar los objetos que irán en el PDF. Estos objetos solo necesitarían saber cómo dibujarse en PDF.
No estoy seguro de si esto es lo que está buscando, pero ¿por qué no simplemente usar CSS con una hoja de estilos de medios = impresión? Diseña tu hoja de estilos para que la forma impresa tenga las características que deseas. Alternativamente, puede exportar a Excel descargando datos en formato CSV y dejando que el usuario construya sus propios informes a partir de los datos.
Para PDF y Excel reales, he usado controles de Aspose.com .
Principalmente para compartir la forma en que lidié con esto, pero también para ofrecer otra opción ...
Estaba usando una grilla de terceros que exportaba Excel XML. Para hacerlo funcionar, utilicé XSLT y algunos códigos para modificar ese XSLT para inyectar la configuración de impresión. No es tan poderoso como PDF, estoy seguro, pero fue un compromiso bastante decente que no requirió mucha personalización por página.
Por lo tanto, la solución básica es exportar en el formato XML de Excel e inyectar las etiquetas para las orientaciones de página, la escala y cualquier otra cosa que le pueda gustar. Puede comenzar con una hoja de Excel básica y guardarla como XML, realizando los ajustes que desee. Luego lee la fuente y descubre cómo lo hizo Excel. No pude encontrar ninguna documentación útil.
Puede echar un vistazo a SQL Server Reporting Services. También hay una serie de herramientas de informes de terceros como http://www.devexpress.com/Products/NET/Reporting/
También puede consultar la configuración de hojas de estilo CSS específicas para imprimir. Lo bueno de esto es que puede tomar una página web emergente que se muestra al usuario, cambiar el formato ligeramente para eliminar cualquier tipo de pancartas u otras imágenes de tipo que acaparan tinta, y luego imprimir lo que ven en la pantalla.
Algunos sitios tendrán un enlace a una "versión amigable para la impresora", pero incluso teniendo una referencia tanto a la pantalla como a la hoja de estilo de impresión en el encabezado HTML funcionará si el usuario simplemente decide presionar CTRL + P en la página en la que se encuentra.