SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
18.03.2025

Imprimindo o Conteúdo de um DIV em uma Página da Web: Métodos e Dicas

Resposta Rápida

Para imprimir o conteúdo de um bloco DIV, utilize o método descrito abaixo: crie uma janela pop-up com o conteúdo desejado e acione a função de impressão interna do navegador. Aqui está um exemplo de código que implementa esse processo:

function printDiv(divId) {
    var divContent = document.getElementById(divId).innerHTML; 
    var printWin = window.open('', '_blank', 'width=800,height=600'); 
    printWin.document.write(`<html><head><title>Imprimir Conteúdo</title></head><body>${divContent}</body></html>`);
    printWin.document.close(); 
    printWin.addEventListener('load', function() {
        printWin.print(); 
        printWin.close(); 
    }, true);
}

Você pode iniciar a impressão com o comando printDiv('seuDivId'), onde 'seuDivId' é o identificador do bloco DIV. O script carregará automaticamente o conteúdo e iniciará o processo de impressão.

Tarefas Complicadas? Soluções Avançadas!

Complexidade de Conteúdo Dinâmico

Quando seu bloco DIV contém formulários ou elementos complexos em JavaScript, utilize técnicas adicionais. Clonar a árvore DOM preservará toda a interatividade até o momento da impressão:

function printDivWithDynamicContent(divId) {
    const printWin = window.open('', '_blank', 'width=800,height=600');
    const originalDiv = document.getElementById(divId);
    const cloneDiv = originalDiv.cloneNode(true);
    printWin.document.body.appendChild(cloneDiv);
    printWin.document.close();
    printWin.addEventListener('load', function() {
        printWin.print();
        printWin.close();
    }, true);
}

Aparência é Tudo: Estilos de Impressão

A formatação adequada é crucial. Estilos CSS podem desaparecer durante a impressão. Neste caso, utilize a regra @media print para manter os estilos ou adicione estilos inline conforme necessário:

function addInlinePrintStyles(divContent) {
    var inlineStyles = '<style>' +
                       '  body { font-family: Arial, sans-serif; color: #333; }' +
                       '</style>';
    return inlineStyles + divContent;
}

function printDiv(divId) {
    var divContent = document.getElementById(divId).innerHTML;
    divContent = addInlinePrintStyles(divContent);
    // ... o restante da função permanece inalterado
}

Considerações Importantes: Imagens e Frames

Se seu bloco contém imagens ou frames, assegure-se de que estejam completamente carregados antes de imprimir:

function printDivWithImages(divId) {
    // ... código conforme descrito acima ...
    printWin.addEventListener('load', function() {
        var allImagesLoaded = Array.from(printWin.document.images).every((img) => img.complete);
        if (allImagesLoaded) {
            printWin.print();
            printWin.close(); 
        } else {
            // Lidar com a situação quando as imagens ainda não estão carregadas
        }
    }, true);
}

Visualização

Imagine seu bloco DIV no centro da percepção, cercado pelo barulho de uma grande cidade. Seu DIV é um objeto visível no holofote:

<div id="cobertura">
  <!-- Conteúdo que chama a atenção -->
</div>

O comando de impressão é como um holofote que ilumina exclusivamente seu objeto, deixando outros objetos na cidade na escuridão. Assim, seu conteúdo se torna o ponto focal:

O contorno da cidade é apagado (💭), toda a luz está focada no objeto:
[🌃💭, 🌆💭, 🏙️💭, ... 🌃💭, 🎥️🌟 (conteúdo em evidência)]

Navegadores? Sim, Eles São Diferentes!

Compatibilidade entre Diferentes Navegadores

Certifique-se de que sua função de impressão funcione corretamente em vários navegadores. Cada um tem suas peculiaridades, e você pode precisar ajustar sua solução.

Considerações no Chrome

Preste atenção especial ao Chrome, verificando se seu bloqueador de pop-ups está impedindo que sua função de impressão seja executada.

Impressão de Formulários, Não Apenas Texto

Se o DIV inclui formulários, certifique-se de que os valores desses formulários sejam impressos corretamente. Para isso, use o seguinte método:

function copyFormValues(originalForm, clonedForm) {
    var originalInputs = originalForm.querySelectorAll('input, select, textarea');
    var clonedInputs = clonedForm.querySelectorAll('input, select, textarea');
    originalInputs.forEach(function(originalInput, index) {
        var clonedInput = clonedInputs[index];
        clonedInput.value = originalInput.value; 
    });
}

Recursos Úteis

  1. Método Window: print() - Web APIs | MDN — Página de documentação MDN detalhando o uso de window.print().
  2. The Printliminator - CSS-Tricks — Descrição de uma ferramenta para gerenciar conteúdo de impressão.
  3. javascript - Imprimir o conteúdo de um DIV - Stack Overflow — Uma discussão dedicada à impressão do conteúdo de um bloco DIV no Stack Overflow.
  4. Como Criar Páginas Amigáveis para Impressão com CSS — SitePoint — Um guia para criar páginas otimizadas para impressão.
  5. html2canvas - Capturas de Tela com JavaScript — Uma ferramenta para tirar capturas de tela com JavaScript.
  6. Print.js - biblioteca Javascript para impressão de elementos HTML, arquivos PDF e imagens. — Uma biblioteca para impressão de elementos HTML, PDFs e imagens.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!