Notizie: scarica ora l'ultima versione disponibile di Firefox!

Autore Topic: [Developer] Associazione automatica stampa/stampante, possibile? Se si, come?  (Letto 873 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline amc

  • Post: 7
Ciao a tutti,
mi chiamo Angelo e mi sono appena iscritto in quanto ho un problema abbastanza critico che ora cerco di spiegare il meglio possibile.
Utilizzo Firefox 3.6.3 per visualizzare una pagina, nello specifico un pannello di controllo per un sito di e-commerce, dove sono presenti due link ben distinti che servono per lanciare due stampe di etichette adesive di formato diverso per le quali vengono utilizzate due stampanti ben distinte: e' possibile, tramice codice, modifiche alla configurazione o che altro, poter dire a Firefox 'guarda che quando clicco sul primo link devi stampare direttamente sulla stampante A e quando clicco sul secondo link devi stampare direttamente sulla stampante B', il tutto utilizzando le impostazioni predefinite che sono settate direttamente sulle stampanti?
Attenzione a una cosa: sul pc in questione, un laptop Compaq con Vista 32bit, e' presente anche una terza stampante, quella predefinita che deve restare tale in quanto viene utilizzata in modo proprietario da un software di terze parti che viaggia di vita propria.
Qualcuno puo' darmi cortesemente una mano?
Ringrazio tutti per l'attenzione.
Ciao

Angelo
« Ultima modifica: 15 Aprile 2010 13:59:09 da gialloporpora »

Offline miki64

  • Moderatore
  • Post: 36035
Re: Associazione automatica stampa/stampante, possibile? Se si, come?
« Risposta #1 il: 15 Aprile 2010 10:15:22 »
Mah.. ...a me sembra che un escamotage sia possibile facilmente dal menu "File / Stampa...", scegliendo l'opportuna stampante, se ho ben compreso il problema.

Offline klades

  • Moderatore
  • Post: 5788
    • http://www.nic-nac-project.org/~kaosmos
Re: Associazione automatica stampa/stampante, possibile? Se si, come?
« Risposta #2 il: 15 Aprile 2010 10:26:36 »
L'unica via per ottenere il risultato che cerchi è inserire del codice javascript che - attraverso l'interazione con i componenti di Firefox (XPCOM) - modifichi dinamicamente la preferenza relativa alla stampante di default per Firefox.

Non è complicatissimo, ma tu puoi intervenire sul codice di questa pagina a piacere? Questa pagina è accessibile solo a te o anche ad altri?


Offline amc

  • Post: 7
Re: Associazione automatica stampa/stampante, possibile? Se si, come?
« Risposta #3 il: 15 Aprile 2010 10:51:18 »
Ciao,
grazie per le risposte!
L'idea sarebbe proprio quella di non far comparire il pannello di stampa, questo sia per velocizzare sia per far si che chi lavora su quella pagina (un paio di persone, intese come utenti finali) non possa cambiare formati o altre impostazioni.
Per l'inserimento fisico del codice js non credo sia un problema, lo faccio fare a chi ha realizzato quella pagina: avete qualche esempio di codice per cortesia?
Grazie di nuovo!
Ciao

Angelo

Offline klades

  • Moderatore
  • Post: 5788
    • http://www.nic-nac-project.org/~kaosmos
Re: Associazione automatica stampa/stampante, possibile? Se si, come?
« Risposta #4 il: 15 Aprile 2010 10:59:01 »
Come prima cosa devi cercare il nome delle stampanti in Firefox: digita about:config nella barra degli indirizzi e cerca tra le preferenze che iniziano con print.

Ammettendo che le due stampanti che ti interessino siano "Stampante1" e "Stampante2", un esempio di codice potrebbe essere questo:

Codice: [Seleziona]
function myPrint(index) {
  netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  var prefs = Components.classes["@mozilla.org/preferences-service;1"]
      .getService(Components.interfaces.nsIPrefBranch);
  if (index == 0)
var printName = "Stampante1";
  else
var printName = "Stampante2";
  var oldPrinter = prefs.getCharPref("print.print_printer");
  prefs.setCharPref("print.print_printer", printName);
  prefs.setBoolPref("print.always_print_silent", true);
  prefs.setBoolPref("print.show_print_progress", false);
  window.print();
  setTimeout(function() { prefs.setCharPref("print.print_printer", oldPrinter); prefs.setBoolPref("print.always_print_silent", false); prefs.setBoolPref("print.show_print_progress", true);}, 2000);
}

Questo codice avvia la stampa in background su "Stampante1" se index è uguale a 0 e su "Stampante2" se è diverso da 0.

La prima volta che usi questo codice ti apparirà un avviso di sicurezza che però le volte successive può essere evitato.

Prova e ovviamente adatta secondo le tue esigenze.

Offline amc

  • Post: 7
Re: Associazione automatica stampa/stampante, possibile? Se si, come?
« Risposta #5 il: 15 Aprile 2010 11:56:30 »
Grazie Klades per l'esempio!
Volendo associare il singolo codice js al singolo link potrei abbinare il codice seguente al link che prevede la stampa solo su Stampante1?

Codice: [Seleziona]
function myPrint(index) {
  netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  var prefs = Components.classes["@mozilla.org/preferences-service;1"]
      .getService(Components.interfaces.nsIPrefBranch);
  var oldPrinter = prefs.getCharPref("print.print_printer");
  prefs.setCharPref("print.print_printer", "Stampante1");
  prefs.setBoolPref("print.always_print_silent", true);
  prefs.setBoolPref("print.show_print_progress", false);
  window.print();
  setTimeout(function() { prefs.setCharPref("print.print_printer", oldPrinter); prefs.setBoolPref("print.always_print_silent", false); prefs.setBoolPref("print.show_print_progress", true);}, 2000);
}

Gia' che ci sono mi sono messo a cercare un attributo per passargli oltre il nome della stampante anche il numero delle copie ma non ho trovato nulla, esiste?
Grazie ancora!
Ciao

Angelo

Offline klades

  • Moderatore
  • Post: 5788
    • http://www.nic-nac-project.org/~kaosmos
Re: Associazione automatica stampa/stampante, possibile? Se si, come?
« Risposta #6 il: 15 Aprile 2010 12:11:05 »
Mi sembra assurdo duplicare il codice, è molto più logico usare la funzione che ti avevo dato io e associare myPrint(0) al primo link e myPrint(1) al secondo.

Per quanto riguarda il numero delle copie, mi sa che l'unico modo è moltiplicare le chiamate di window.print(), usando ovviamente un piccolo timeout.

Offline amc

  • Post: 7
Re: Associazione automatica stampa/stampante, possibile? Se si, come?
« Risposta #7 il: 15 Aprile 2010 12:21:44 »
Per logica sicuramente e' meglio la tua funzione pero' mi serve un chiarimento: index da cosa viene impostato?

Offline klades

  • Moderatore
  • Post: 5788
    • http://www.nic-nac-project.org/~kaosmos
Re: Associazione automatica stampa/stampante, possibile? Se si, come?
« Risposta #8 il: 15 Aprile 2010 13:07:01 »
E' l'argomento passato dalla chiamata alla funzione.
Se metti

Codice: [Seleziona]
onclick="myPrint(0)"
sul tag A, index sarà pari a 0.

Offline amc

  • Post: 7
Scusami, non avevo notato il passaggio dell'argomento!
Ora faccio modificare la pagina e inizio con le prove, ti ringrazio nuovamente per la disponibilita!
Ciao

Angelo

0 Utenti e 1 Visitatore stanno visualizzando questo topic.