Imprimir silencioso um pdf incorporado
-
13-09-2019 - |
Pergunta
Eu tenho uma página da web com PDF incorporado. Meu código se parece com o seguinte:
<embed
type="application/pdf"
src="path_to_pdf_document.pdf"
id="pdfDocument"
width="100%"
height="100%">
</embed>
Eu tenho esse código JavaScript para imprimir meu pdf:
function printDocument(documentId) {
//Wait until PDF is ready to print
if (typeof document.getElementById(documentId).print == 'undefined') {
setTimeout(function(){printDocument(documentId);}, 1000);
} else {
var x = document.getElementById(documentId);
x.print();
}
}
Quando este código é executado plug-in Acrobat abre a caixa de impressão bem conhecida. Algo assim:
Duas questões:
- Como melhorar a maneira de detectar que o PDF está carregado e pronto para impressão?
- Como evitar mostrar a caixa de diálogo Imprimir?
Um pouco mais de informação sobre o meu sistema:
OS: Windows XP
Navegador: Internet Explorer 7
Plugin pdf: Leitor de Acrobat 9
Solução
Você não poderá imprimir silenciosamente com JavaScript antigo e simples. Como você gostaria que sua impressora comece a imprimir 100000000 páginas de todos os pretos. Não é uma coisa boa. Se você deseja imprimir silenciosamente e fazê -lo funcionar apenas para o Internet Explorer, existem controles ActiveX por aí que podem fazê -lo. Isso requer configurações de segurança mais altas para sua página e para que seus usuários realmente confiem em seu site.
Outras dicas
This is possible in a trusted, Intranet environment.
<object id="pdfDoc" style="position:absolute;z-index:-1;" name="pdfDoc" classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="900px" height="100%">
<param name="SRC" value="yourdoc.pdf" />
</object>
<input type="button" ... onclick="pdfDoc.printAll();" />
This will bypass the print dialog and send directly to the default printer.
I wonder if you actually need to wait before printing -- won't the print job handle that for you? And I truly hope no modern browser will allow you (or any website for that matter) to print without that confirmation dialog (some old browsers used to do that, a long time ago).
You can do this in Firefox by changing about:config
. Add print.always_print_silent
and set it to true
.