Com base nos comentários abaixo, ele não funciona mais em navegadores modernos.
Esta pergunta demonstra uma abordagem que pode ser útil para você: Impressão silenciosa de um PDF incorporado
Ele usa a <embed>
tag para incorporar o PDF ao documento:
<embed
type="application/pdf"
src="path_to_pdf_document.pdf"
id="pdfDocument"
width="100%"
height="100%" />
Em seguida, você chama o .print()
método no elemento em Javascript quando o PDF é carregado:
function printDocument(documentId) {
var doc = document.getElementById(documentId);
//Wait until PDF is ready to print
if (typeof doc.print === 'undefined') {
setTimeout(function(){printDocument(documentId);}, 1000);
} else {
doc.print();
}
}
Você pode colocar o embed em um iframe oculto e imprimi-lo de lá, proporcionando uma experiência perfeita.
Esta é uma função para imprimir um PDF de um iframe.
Você só precisa passar a URL do PDF para a função. Isso criará um iframe e iniciará a impressão assim que o PDF for carregado.
Observe que a função não destrói o iframe. Em vez disso, ele a reutiliza sempre que a função é chamada. É difícil destruir o iframe porque ele é necessário até que a impressão seja concluída, e o método de impressão não tem suporte de retorno de chamada (até onde eu sei).
fonte
setTimeout
, a função de impressão às vezes falha. Não faço ideia do porquê e espero que alguém descubra.onafterprint
. Estou um pouco preocupado com o fato de que a reutilização de um iframe pode apresentar condições de corrida em que alguém clica em dois botões rapidamente e acaba imprimindo o segundo PDF duas vezes porque o URL do iframe já havia sido trocado antes de a primeira caixa de diálogo de impressão aparecer.Baixe o Print.js em http://printjs.crabbly.com/
fonte
https://github.com/mozilla/pdf.js/
para uma demonstração ao vivo http://mozilla.github.io/pdf.js/
é provavelmente o que você quer, mas não consigo ver o sentido disso, já que os navegadores modernos incluem essa funcionalidade, também funcionará terrivelmente lento em dispositivos de baixa potência, como dispositivos móveis que, a propósito, têm seus próprios plug-ins e aplicativos otimizados .
fonte
Usei essa função para baixar o fluxo de PDF do servidor.
fonte
Solução para vários navegadores para imprimir pdf a partir de string base64:
.
BÔNUS - Abrindo arquivo blob em uma nova guia para o IE11
Se você for capaz de fazer algum pré-processamento da string base64 no servidor, poderá expô-la em alguma url e usar o link em
printJS
:)fonte