Link para imprimir página com JavaScript e jQuery

Postado por: Pedro Rogério em 15 de janeiro de 2009

É extremamente muito simples implementar um link para imprimir a página com JavaScript em seu site. Através do evento onclick podemos abrir a janela de impressão do browser para que o usuário possa imprimir a página. Uma forma não muito elegante, pois mistura JavaScript com a camada de conteúdo(HTML) seria a seguinte:

<a href="#" onclick="window.print(); return false;">Imprimir</a>

Utilizando jQuery, podemos fazer isso de uma forma muito simples, observem o código abaixo:

$(document).ready(function() {
	$('a#print').click(function() {
		window.print();
		return false;
	});
});

Suponhamos que em nossa página tenhamos um link com o ID print, ao clicar nesse link o evento click dispara a janela de impressão do Browser, possibilitando assim a sua impressão. Mas esse código possui uma deficiência, se o usuário estiver navegando com o JavaScript desabilitado, o link não terá mais funcionalidade alguma, a solução então seria criar esse elemento via JavaScript, e adicionar a possibilidade de impressão da seguinte forma:

$(document).ready(function() {
	$('body').prepend('<a id="print" href="#">Clique aqui para imprimir</a>');
	$('a#print').click(function() {
		window.print();
		return false;
	});
});

Vejam no exemplo criado o script em funcionamento, experimente desabilitar o JavaScript e você verá que o link de impressão não é criado não atrapalhando em nada a navegação do usuário. Esse tutorial foi baseado no artigo original de Trevor Davis.

Posts Relacionados

Confira também outros artigos interessantes postados aqui no blog.

Sobre Pedro Rogério

Pedro Rogério é desenvolvedor web por paixão, não saberia fazer melhor outra coisa. Além de escrever para o Pinceladas da Web também escreve para o CSS no Lanche, blog voltado ao desenvolvimento front-end.

7 Responses to “Link para imprimir página com JavaScript e jQuery”

  1. Pedro,

    Falando em impressão, uma das coisa que é bem ruim no html é quando queremos desenvolver relatórios com diversas paginas (claro, html não é feito para isso né).

    Tu tem alguma dica de como desenvolver bons relatórios com html e que suas impressões sejam fiéis?

    []´s

  2. @Juliano,

    Não entendi muito bem o que você precisa, mas com CSS você pode aplicar formatação para impressão, então, o site pode ter um layout e no momento de impressão pode ter outro. Uma coisa interessante que eu escrevi a muito tempo atrás é sobre como forçar quebras de página no momento da impressão com CSS:

    http://www.pinceladasdaweb.com.br/blog/2007/02/08/forcar-quebras-de-pagina-com-css/

  3. Pra mim ta sendo complicado fazer relatorios em HTML
    O problema da quebra de pagina ja resolve… mas como configurar que o body é tamanho A4? se é retrato ou paisagem? como resolver isto?

  4. Fiz uma função parecida, mas que pode imprimir dentro de iframes (por exemplo dentro de um iframe criado pelo thickbox):

    function printWindow(window) {
    $(window)[0].contentWindow.focus();
    $(window)[0].contentWindow.print();
    }

  5. Felipe

    muito bom esse codigo parabéns

  6. Alexandre

    Blz rapaziada…
    então… estou com uma dúvida.
    de como faço para imprimir apenas uma parte da pág.
    entende?
    exemplo:

    imprimir apenas esse TR

  7. olá a todos!
    Fiz uma pequena mudança pois eu tinha um problema com esse código!
    Situação:> Minha DIV estava com overflow:auto; “barra de rolagem no css”, então quando eu ia imprimir não mostrava todo o conteúdo do código, pois a barra de rolagem ocultava o código.
    Solução:> adicionei duas linhas no código.
    $(document).ready(function() {
    $(‘#container’).prepend(‘Click aqui para imprimir’);
    $(‘a#print’).click(function() {
    document.getElementById(‘container’).style.height=’100%’;
    window.print();
    document.getElementById(‘container’).style.height=’500px’;
    return false;
    });
    });
    aqui funcionou muito bem.

    Muito obrigado estava procurando este código a muito tempo.

Leave a Reply