PDA

Ver la Versión Completa : Duplicar impresora


santiago14
22-08-2014, 16:23:13
Buenas, no se si lo que voy a poner es medio descabellado o no.
Lo que quiero es saber si puedo duplicar una impresora a través de código.

Me explico mejor, muchas veces vemos en las listas de impresoras de Windows que tenemos, por ejemplo: HP3050, HP3050 (Copiar 1), HP3050 (Copiar 2), y así.

Luego, los mas ordenaditos a las copias les ponen nombres mas bonitos.

Bueno, quisiera hacer esto, pero a través de Delphi. Ponerle un buen nombre, también a través de Delphi.

Por supuesto que la impresora original la instalo con sus respectivos instaladores y todo. Pero a las siguientes las quisiera hacer a través de un proceso interno de Delphi.
De paso, una vez que las copias cumplan con su misión, eliminarlas también por código.

¿Esto es posible o estoy medio loco y pido cosas raras?

Gracias.

santiago14
22-08-2014, 16:30:32
En particular, me interesaría instanciar (duplicar) la impresora virtual PDFCreator y ponerle nombres particulares a cada una.

juanelo
23-08-2014, 06:23:15
Santiago,
Y esas impresoras duplicadas las necesitas en una app en Delphi o una externa?
Te lo pregunto porque si es desde una aplicación tuya, las puedes nombrar como quieras, al fin lo importante es el índex que ocupa la impresora en el arreglo de las mismas.

santiago14
23-08-2014, 13:23:10
Son para una aplicación en Delphi.
La misma aplicación que la duplica, la utiliza y luego la elimina.

santiago14
23-08-2014, 13:25:29
Claro, lo del nombre sería lo de menos. Lo importante es que se pueda duplicar desde el código Delphi.

juanelo
23-08-2014, 18:07:38
Claro, lo del nombre sería lo de menos. Lo importante es que se pueda duplicar desde el código Delphi.
Que tal,
Lo que te trato de explicar es que en tu sistema lo que unico que tienes que tomar en cuenta, es cual impresora (cual numero en el arreglo de impresoras) es la "original" y guardar precisamente su indice, para luego al crear tu lista de impresoras "duplicadas", les asignes a estas el index que le corresponde a la original.
Ya con el indice de la impresora, puedes mandar a imprimir a esta sin ningun problema, incluso tener acceso a sus propiedades.
Saludos

santiago14
23-08-2014, 18:41:47
Ahh. Creo entender. Lo que me dices es que en realidad no tengo varias instalaciones de la misma impresora con distinto nombre, sino que tengo, en mi sistema, muchos nombres de impresoras que apuntan directamente a la única que tengo instalada.

juanelo
23-08-2014, 18:42:43
Asi es Santiago, con todas sus letras.^\||/

santiago14
23-08-2014, 19:45:43
El tema es que esta aplicación será instalada en un servidor central.
Cada usuario no conoce al otro usuario y menos que están compartiendo, en un servidor central (citrix), una sola impresora virtual.
El problema se presenta cuando dos usuarios quieren mandar hacia pdfcreator en simultáneo, el primero gana la impresora y al segundo no le muestra el pdf que solicitó.
De ahí mi idea de instanciar una impresora virtual cada vez que alguien solicita una impresión pdf.
Con esto cambia el panorama, ¿Cómo se podrá encararlo?
Saludos, Santiago.

santiago14
23-08-2014, 19:49:18
Si todo esto puede hacerse con código sería genial.

juanelo
23-08-2014, 23:11:32
Que tal Santiago,
La verdad no se exactamente como funciona Citrix, pero se deberían de crear tantas impresoras en el servidor, como impresoras tenga el cliente (y que los drivers de cada una sean compatibles tanto en el server como en el cliente). Por lo tanto el cliente deberá de tener la posibilidad de imprimir en su propia instancia de impresora en el servidor.
Un problema que a lo mejor acarrea citrix (que en Terminal Server se solucionó a partir del server 2008), es que al usuario le aparezcan todas las impresoras de todos los usuarios (muy probablemente diferenciadas por algun valor como podria ser el id de sesion), y le sea dificil seleccionar la suya.
Te comento que yo al trabajar con TS tuve ese problema, lo solucioné obteniendo el ID de sesion de cada cliente, ya con ese podía reconocer plenamente las impresoras de cada uno de los clientes.
Saludos.