Non è possibile dirottare il comando di stampa nel browser, ma si può dirottare le scorciatoie da tastiera (anche se io non lo consiglio) in modo che quando l'utente stampa usando ctrl/cmd + p
, reindirizza a un PDF (o fa qualcos'altro). Tuttavia, si tratta di un campo minato di usabilità, probabilmente dovresti semplicemente creare un link grande che dice "Versione stampabile" e collegarlo al PDF (o una versione della pagina che utilizza un CSS compatibile con la stampa).
Un'altra buona opzione consiste semplicemente nel definire alcune regole per il tipo di supporto print
nel file CSS, quindi i browser applicheranno quelle quando l'utente stamperà, senza alcun hack o javascript.
Ma da quando hai chiesto di aver creato un piccolo script di dirottamento di scorciatoie per il comando di stampa. E 'un po' difficile a causa del tasto di comando mac, ma qualcosa di simile:
var cmd = false;
$(document).on('keydown', function(e) {
if(detectMacCommand(e.which)) {
cmd = true;
return;
}
// now detect print (ctr/cmd + p)
if (e.which == 80 && (e.ctrl || cmd)) {
e.preventDefault();
alert('redirect to PDF');
}
}).on('keyup', function(e) {
if(detectMacCommand(e.which)) {
cmd = false;
return;
}
});
function detectMacCommand(key) {
return ($.browser.mozilla && key == 224 ||
$.browser.opera && key == 17 ||
$.browser.webkit && (key == 91 || key == 93));
}
Questo è abbastanza freddo, ma non usarlo :)
È possibile farlo tramite PHP. Non JS. http://webdesign.about.com/od/php/ht/force_download.htm In JS, hai già inviato le intestazioni dei file, quindi non puoi fare cose esotiche come questa. – Manishearth
1. Questo scaricherà il file, non verrà stampato; 2. Anche se si carica il pdf, verrà aperto e non stampato. – Googlebot
Oops Ho letto male la domanda. Una cosa che potrebbe funzionare (non lo so) sta caricando il pdf in un iframe e chiamando la stampa dell'iframe. Ma non sono sicuro di quanto DOM venga preservato. – Manishearth