Qual é a melhor maneira de imprimir o conteúdo de um DIV?
javascript
jquery
html
printing
usertest
fonte
fonte
Respostas:
Pequenas alterações em relação à versão anterior - testada no CHROME
fonte
mywindow.document.write(data);
Adicione isto:mywindow.document.write('<script type="text/javascript">$(window).load(function() { window.print(); window.close(); });</script>');
E remova:mywindow.print();
emywindow.close();
Eu acho que existe uma solução melhor. Faça sua div para imprimir cobrir o documento inteiro, mas somente quando for impresso:
fonte
Embora isso tenha sido dito por @gabe , se você estiver usando o jQuery, poderá usar o meu
printElement
plugin.Há uma amostra aqui e mais informações sobre o plugin aqui .
O uso é bastante simples, basta pegar um elemento com um seletor jQuery e imprimi-lo:
Espero que ajude!
fonte
Usando o Jquery, basta usar esta função:
Seu botão de impressão ficará assim:
Editar: se você tiver dados de formulário que você precisa manter, o clone não os copiará; portanto, você só precisará pegar todos os dados do formulário e substituí-los após a restauração da seguinte maneira:
fonte
el
é terrível, especialmente desde o uso do jQ. Muito melhor do que simplesmente passar oselector
e se livrar do codificado#
el
. Eu acho que o comando de impressão é enviado quando o corpo está sendo restaurado.A partir daqui http://forums.asp.net/t/1261525.aspx
fonte
eu usei
Bill Paetzke
resposta para imprimir uma div conter imagens, mas não funcionou com o google chromeeu só precisava adicionar esta linha
myWindow.onload=function(){
para fazê-la funcionar e aqui está o código completoAlém disso, se alguém só precisa imprimir uma div com id, ele não precisa carregar o jquery
aqui está o código javascript puro para fazer isso
espero que isso possa ajudar alguém
fonte
Isso imprimirá a
div
área desejada e retornará o conteúdo como estava.printdivname
é odiv
que será impresso.fonte
Crie uma folha de estilo de impressão separada que oculte todos os outros elementos, exceto o conteúdo que você deseja imprimir. Sinalize-o usando
'media="print"
quando você o carrega:<link rel="stylesheet" type="text/css" media="print" href="print.css" />
Isso permite que você tenha uma folha de estilo completamente diferente carregada para impressões.
Se você deseja forçar a caixa de diálogo de impressão do navegador para aparecer na página, faça-o desta maneira em carregamento usando o JQuery:
$(function() { window.print(); });
ou acionado de qualquer outro evento que você deseja, como um usuário clicando em um botão.
fonte
Penso que as soluções propostas até agora têm os seguintes inconvenientes:
Eu melhorei nas soluções acima. Aqui está algo que eu testei que funciona muito bem com os seguintes benefícios.
Pontos-chave a serem observados:
fonte
Eu criei um plugin para resolver esse cenário. Fiquei insatisfeito com os plugins existentes e decidi criar algo mais extenso / configurável.
https://github.com/jasonday/printThis
fonte
A solução aceita não estava funcionando. O Chrome estava imprimindo uma página em branco porque não estava carregando a imagem a tempo. Essa abordagem funciona:
Edit: Parece que a solução aceita foi modificada após o meu post. Por que o voto negativo? Esta solução também funciona.
fonte
Sei que essa é uma pergunta antiga, mas resolvi esse problema com o jQuery.
CSS
fonte
Embora a resposta @BC tenha sido a melhor para imprimir uma única página.
Mas Imprimir várias páginas de tamanho A4 ao mesmo tempo com as teclas Ctrl + P a seguir pode ajudar.
fonte
fonte
Aqui está o meu plugin jquery print
fonte
Se você deseja ter todos os estilos do documento original (incluindo estilos embutidos), pode usar esta abordagem.
Implementação:
fonte
Nota: Isso funciona apenas com sites habilitados para jQuery
É muito simples com esse truque legal. Funcionou para mim no navegador Google Chrome . O Firefox não permitirá que você imprima em PDF sem um plug-in.
A lógica é simples. Estamos criando uma nova tag de script e anexando-a na frente da tag body de fechamento. Injetamos uma extensão de impressão jQuery no HTML. Alterar myDivWithStyles com seu próprio ID de tag Div. Agora é preciso preparar uma janela virtual imprimível.
Experimente em qualquer site. Às vezes, apenas uma ressalva é que CSS complicado pode causar a falta de estilos. Mas obtemos o conteúdo na maioria das vezes.
fonte
No Opera, tente:
fonte
Aqui está uma solução IFrame que funciona para IE e Chrome:
fonte
Criou algo genérico para usar em qualquer elemento HTML
Espero que isto ajude.
fonte
Modifiquei a resposta @BillPaetski para usar querySelector, adicione CSS opcional, remova a tag H1 forçada e torne o título opcionalmente especificado ou puxado da janela. Ele também não imprime mais automaticamente e expõe os internos, para que possam ser trocados na função wrapper ou conforme desejado.
Os únicos dois vars privados são tmpWindow e tmpDoc, embora eu acredite que o acesso ao título, css e elem possa variar; deve-se assumir que todos os argumentos da função são privados.
Código: Uso:fonte
<input>
elementos. Como posso usar isso, incluindo o que o usuário digitou?<input>
,<select>
,<textarea>
compontents para ser seu valor de tempo de execução. Existem alternativas, mas esse não é um problema com esse script, mas um problema com o modo como os navegadores funcionam e obtêminnerHTML
propriedades de documentos com entradas, telas etc..attr('value',)
. Eu até fiz isso para a área de texto (anexando) e as caixas de seleção (.attr('checked',)
). Me desculpe se eu não estava pensando o suficiente sobre o que estava perguntando.O código abaixo copia todos os nós relevantes que são direcionados pelo seletor de consulta, copia seus estilos como visto na tela, pois muitos elementos pai usados para direcionar os seletores de css estarão ausentes. Isso causa um pouco de atraso se houver muitos nós filhos com muitos estilos.
Idealmente, você teria uma folha de estilo de impressão pronta, mas isso é para casos de uso em que não há uma folha de estilo de impressão a ser inserida e você deseja imprimir como visto na tela.
Se você copiar os itens abaixo no console do navegador nesta página, ele imprimirá todos os trechos de código desta página.
fonte
Este é realmente um post antigo, mas aqui está uma atualização que fiz usando a resposta correta. Minha solução também usa jQuery.
O objetivo é usar a exibição de impressão adequada, incluir todas as folhas de estilo para a formatação correta e também ser suportada na maioria dos navegadores.
Mais tarde, você simplesmente precisa de algo como isto:
Tente.
fonte
O mesmo que a melhor resposta, caso você precise imprimir a imagem como eu fiz:
Caso você queira imprimir uma imagem:
fonte
load
evento no pop-up. Sem ele, você imprimirá uma página em branco, pois a imagem não está carregada. =>$(popup).load(function(){ popup.focus(); popup.print(); });
A melhor maneira de fazer isso seria enviar o conteúdo da div para o servidor e abrir uma nova janela onde o servidor poderia colocar esse conteúdo na nova janela.
Se essa não for uma opção, você pode tentar usar uma linguagem do lado do cliente, como javascript, para ocultar tudo na página, exceto essa div, e imprimir a página ...
fonte