Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Imprimir Paginas En Php

Iniciado por Kabila, 19 de Abril de 2006, 12:36:40 PM

« anterior - próximo »

Kabila

 Buenas,

Veamos si me explico.

En una aplicacion que estoy haciendo, tengo que imprimir los pedidos y/o facturas resultantes....

Para empezar el PHP no imprime al ser un lenguaje de servidor.
Pasando al javascript, lenguaje de cliente, he conseguido imprimir la pagina pero encuentro los siguientes problemas:
Imprime cabeceras y pies (esto se puede arreglar diciendole al cliente que lo elimine de su navegador)
Sale el setup de impresion para elegir impresora, paginas, etc....¿esto no se puede eliminar?
en algunos casos: pag.  de pedidos, hay que repetirla tres veces con diferente leyenda: Copia para......

¿como se puede generar eso? alguien se ha currado algo asi

¿soluciones?

un saludo

josepzin

 No habías preguntado esto mismo hace poco?? :o
parece un deja-vú :P

FANatiko

Cita de: "Kabila"Sale el setup de impresion para elegir impresora, paginas, etc....¿esto no se puede eliminar?
No lo se con certeza, pero tengo la impresión que no se puede... imaginate lo que podrían hacer los spammers agresivos con esto... ya no serian popups sino que irian imprimiendo una pagina de publicidad en todas las impresoras del sistema... ufff... que me entra el mareo.

A parte, que digo yo que los que diseñaron el sistema de impresión decidieron conectar y abrirte el dialogo de Windows (o Linux o MacOS), igual que para ficheros, etc. Que es al que, en teoria, estas habituado.

gdl

 Vamos a ver, una solución más o menos aceptable es generar un documento RTF y hacer que el usuario lo descargue. Lo abra con el Word y lo imprima. Es lo que hacen aquí. El Word no te saca el diálogo de impresoras por defecto. Además, se puede configurar el explorador para que abra automáticamente el fichero. En conjunto, y tras una buena configuración del cliente, sería

- El usuario pulsa el botón de imprimir
- Se le abre el word con el documento
- Pulsa el botón de imprimir del word

Creo que no se puede mejorar mucho más.

StraT

 La solución correcta es usar css para hacer una hoja de estilos para el medio print. Me explico:

Cuando usas css de forma normal, enlazas de la siguiente forma:

http://www.minid.net/wp-content/themes/minid/style.css" type="text/css" media="screen" />

lo que has de hacer ahora es añadir otra linea:

http://www.minid.net/wp-content/themes/minid/print.css" type="text/css" media="print" />

donde print.css sería tu hoja de estilos para impresion. En esa hoja de estilos, has de poner en el cuadro que englobe las cabeceras, menus, etc (lo que no quieras mostrar) un display: none;

Ejemplo:

Contenido de la cabecera



Contenido a imprimir


En la hoja de estilos:

#cabecera {
display: none;
}

El resultado es que al imprimir se aplicará el display: none de la cabecera y esta no saldrá, ajustando además el contenido al espacio dejado por la cabecera (para que no queden espacios en blanco donde antes habia el contenido que no quieres imprimir).

Lo de eliminar la pantalla de selección de impresora y tal creo que es imposible, o almenos yo no he visto nada similar.

Saludos
quot;Solo hay dos cosas infinitas, el universo y la estupidez humana, aunque de lo primero no estoy muy seguro\\\" Einstein

Kabila

 Hola a todos,
Josepzin: no es un deja-vu. Por suerte para estas cosas tengo bastante memoria. Mas que nada era para confirmar sospechas.

gdl: Pienso que hay maneras mejores de solucionar estos temas que sacar el word. Quizas para una aplicacion masiva seria conveniente pero para un usuario es mejor eliminarselo directamente del navegador y ya esta. Imprimir la pag con javaescript sales del paso y lo hace bien..para imprimir las tres voy a probar en hacer el documento con las tres pag. e imprimirlo a ver si funciona ;)

strat: Soluciones via google de momento aun se buscarlas. Suelo recurrir al foro cuando ya he rebuscado por todos los lados a ver si hay programadores que se han encontrado este problema. Parece que no.

un saludo a todos.....

josepzin

 
Citarpag. de pedidos, hay que repetirla tres veces con diferente leyenda: Copia para......
¿como se puede generar eso? alguien se ha currado algo asi
¿soluciones?
Lo más parecido que tuve que hacer, lo solucioné desde Flash, que si no recuerdo mal tiene unos comandos para crear un Objeto de impresión, luego se le agregan Páginas y finalmente se imprime. Fue hace bastante así que no te lo puedo asegurar.

Edito: te copio algo de la ayuda de Flash sobre el tema:


Para crear un trabajo de impresión:
1-Cree una instancia del objeto de trabajo de impresión: new PrintJob().
2-Inicie el trabajo de impresión y muestre el cuadro de diálogo Imprimir del sistema operativo: PrintJob.start(). Para más información, consulte Inicio de un trabajo de impresión.
3-Añada páginas al trabajo de impresión (llame una vez por página para añadirlas al trabajo de impresión): PrintJob.addPage(). Para más información, consulte Adición de páginas a un trabajo de impresión.
4-Envíe el trabajo de impresión a la impresora: PrintJob.send(). Para más información, consulte Envío del trabajo de impresión a la impresora.
5-Elimine el trabajo de impresión: delete PrintJob. Para más información, consulte Eliminación del trabajo de impresión.



PrintJob.paperHeight
número
puntos
Altura del papel total.

PrintJob.paperWidth
número
puntos
Anchura total del papel

PrintJob.pageHeight
número
puntos
Altura del área real de la página que se puede imprimir; no incluye los márgenes definidos por el usuario

PrintJob.pageWidth
número
puntos
Anchura del área real de la página que se puede imprimir; no incluye los márgenes definidos por el usuario

PrintJob.orientation
cadena
no disponible
Orientación "portrait" o "landscape"


Adición de páginas a un trabajo de impresión
MyPrintJob.addPage(target[,printArea:Object, options:Object, frameNum:Number]):boolean;



Envío del trabajo de impresión a la impresora
Para enviar el trabajo de impresión a la impresora después de utilizar las llamadas a addPage(), utilice el método PrintJob.send(), que hace que Flash Player deje de colocar en cola el trabajo de impresión para que la impresora comience a imprimir.  


Espero que te sea de utilidad...

Kabila

 Buenas:

Al final la impresion de las tres paginas de pedidos que al fin y al cabo eran iguales con las leyendas copia para : facturacion, archivo,cliente........He hecho un bucle en PHP que genera las tres seguidas y ocupan una pag entera cada una y a continuacion las mando imprimir......

El hecho de que salga el setup de la impresora tampodo es relevante y que salga en cada pag. cabecera y pie..vere si con css lo puedo eliminar que creo que no  (grrr) y si no que lo elimine el cliente del navegador.

La verdad es que no estoy acostumbrado a estas chapuzas...pero parece que todo el mundo lo hace asi...

un saludo.

jazcks

 yo hace tiempo estaba igual, al final como ya dije en el otro post, usar FPDF para generar pdf's al  vuelo, y así controlar hasta el milimetro lo que hay que imprimir :P
suerte!

StraT

 
Citarstrat: Soluciones via google de momento aun se buscarlas. Suelo recurrir al foro cuando ya he rebuscado por todos los lados a ver si hay programadores que se han encontrado este problema. Parece que no.

Ni es solución vía google ni es una chapuza, es la solución más standard y por lo que veo es la que vas a usar para quitar cabecera y pie, pero en fin, no pretendía herir tu sensibilidad, sorry.

Saludos
quot;Solo hay dos cosas infinitas, el universo y la estupidez humana, aunque de lo primero no estoy muy seguro\\\" Einstein






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.