Configurando impressão no seu documento html

Recentemente tive reclamações de usuários em um sistema que entregamos em produção relacionado a impressão de documentos a partir do browser. O problema era que uma página em branco ou com pouco texto estava apresentando duas página para impressão o que estava gerando desperdício de folhas porque no rodapé da página vem informações como a url impressa.

Eu não conhecia nada relacionado que pudesse ajudar a configurar a página, então, partir para o mais óbivio que era ocultar / exibir elementos ao clicar em imprimir. Além de ser uma solução ruim não funcionou 100% e foi aí que batendo cabeça aqui e ali encontrei a media query @print.

Tá mas o que esse cara faz? Com essa media query você pode configurar o que quer ocultar / exibir no momento da impressão. No meu caso a página possuia uma barra com algumas opções que não deveria sair na impressão e o body da página estava com height: 100%.

Para usar esse cara é bem fácil basta você adicionar a media query @print e adicionar ou remover os elementos da tela de acordo com a sua necessidade, então, para resolver meu problema bastou adicionar um height: 95% e setar um display none na barra que não deveria aparecer na impressão. Simples assim!

Veja um exemplo abaixo:

<html>
<head>
<style>
   @media print { 
     #menu {
         display: none !important;
     }

     body {
         height: 95%;
     }
   }
</style>
</head>
<body>
  <div id="menu">
    <ul>
     <li>Item 1</li>
     <li>Item 2</li>
  </div>
  <div class="content">
    Aqui é o conteúdo que queremos imprimir
  </div>
</body>
</html>

Como podem ver no momento da impressão a div id “menu” será oculta e o body da página será ajustado para 95%. Essa é uma forma simples e prática de você configurar o conteúdo de impressão da sua página.