2008-10-23 16 views
15

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.¿Cómo hago una impresión avanzada desde una aplicación web?

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.

Se agradece cualquier consejo (especialmente de la experiencia).

Respuesta

11

Como he descubierto asked about here already y descubrí 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 innovadora es morder la bala y generar PDF. Las herramientas que mencionaste son buenas. También debe consultar iText y 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 simplemente no lo hace a largo plazo, terminará por molestarlos y crear más dolores de cabeza cuando no puedan (o simplemente no sigan) seguir las instrucciones.

La barra lateral "Preguntas relacionadas" es muy útil.Vi a estas preguntas sobre el control de la impresora de la página Web (ambos con respuestas que ascienden a: "no se puede"):

Programmatically Selecting Landscape Printing

Printing to a Specific Printer

+0

Solo un comentario positivo y un comentario para decir iTextSharp es EXCELENTE. Lo he usado también con mucho éxito. –

+0

En realidad, me parece que Firefox 3 hace cosas mucho mejor que IE. Sin embargo, Firefox 2 sí que fue muy divertido. –

4

También puede consultar la configuración de CSS stylesheets específicos para la impresión. 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 en el encabezado HTML funcionará si el usuario simplemente decide presionar CTRL + P en la página están encendidos

+1

Este es el enfoque correcto a menos que esté buscando diseños de impresión muy precisos y repetibles, como formularios o en cualquier lugar donde necesite alinear los resultados. También preguntó sobre el retrato o paisaje seleccionable por el usuario y esta ruta requiere que el usuario ajuste su configuración de impresión, lo cual es una idea incompleta. – CMPalmer

+0

Vea esto: http://stackoverflow.com/questions/37162/how-do-i-make-an-html-page-print-in-landscape-when-the-user-selects-print – CMPalmer

1

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 archivos PDF y Excel reales he utilizado controles de Aspose.com.

+0

Si los datos son tabular, la opción de exportar a Excel es excelente. No importa cómo presente sus datos, alguien más querrá cortar, cortar en dados, codificar el color y graficar algo de él; dejarlos descargar Excel (o solo CSV) permite todo eso. – CMPalmer

+0

Sí, pero a mi CEO no le gusta eso. Él prefiere que el informe se imprima después de que haga clic en el botón 'imprimir'. – Salamander2007

3

he utilizado y tenía 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 para generar PDF no horrid, sólo asegúrese de escribir 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.

1

Obras por sólo IE:

http://www.meadroid.com/scriptx/index.asp

Control absoluto para aquellos que necesitan imprimir documentos html de los equipos cliente y servidor que se ejecutan el navegador de Microsoft Internet Explorer.

Un subconjunto básico de la funcionalidad de impresión ScriptX - encabezado & configuración del pie de página, orientación impresa, control aproximado de los márgenes y un comando de impresión de ventana/marco del navegador - está disponible sin costo y se puede distribuir libremente. 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.

1

Secundando lo que otros han dicho, nunca vas a obtener el navegador para imprimir como quieras. Hablando desde la experiencia, el tipo de medio de impresión CSS parece como si funcionara, pero realmente nunca hace el trabajo, especialmente si necesita trabajar en más de un navegador (y ya incluyo varias versiones de IE como diferentes navegadores, creo que todos los sitios web terminan necesitando serlo.)

Creo que la mejor manera es crear 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.

0

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, 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 los informes y los datos dinámicos de las filas , pero se puede hacer.

Para imprimir realmente: 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.

0

Principalmente para compartir la forma en que tratamos con esto, sino también para ofrecer otra opción ...

que estaba usando una cuadrícula de 3 ª parte que exporta XML Excel. 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.

Cuestiones relacionadas