Eu tenho um relatório HTML, que precisa ser impresso em paisagem por causa das muitas colunas. Existe uma maneira de fazer isso, sem que o usuário precise alterar as configurações do documento?
E quais são as opções entre os navegadores.
No seu CSS, você pode definir a propriedade @page como mostrado abaixo.
@media print{@page {size: landscape}}
A @page faz parte da especificação CSS 2.1, no entanto, isso size
não é tão destacado pela resposta à pergunta @Page {size: landscape} obsoleta? :
CSS 2.1 não especifica mais o atributo size. O rascunho atual do módulo CSS3 Paged Media o especifica (mas isso não é padrão ou aceito).
Conforme declarado, a opção de tamanho vem da CSS 3 Draft Specification . Em teoria, pode ser definido para o tamanho e a orientação da página, embora na minha amostra o tamanho seja omitido.
O suporte é muito misto com um relatório de erro iniciado no firefox , a maioria dos navegadores não o suporta.
Pode parecer funcionar no IE7, mas isso ocorre porque o IE7 lembrará a última seleção de paisagem ou retrato dos usuários na visualização de impressão (somente o navegador será reiniciado).
Este artigo tem algumas sugestões de soluções alternativas usando JavaScript ou ActiveX que enviam chaves para o navegador dos usuários, embora não sejam ideais e dependam da alteração das configurações de segurança do navegador.
Como alternativa, você pode girar o conteúdo em vez da orientação da página. Isso pode ser feito criando um estilo e aplicando-o ao corpo que inclui essas duas linhas, mas isso também tem desvantagens, criando muitos problemas de alinhamento e layout.
<style type="text/css" media="print">
.page
{
-webkit-transform: rotate(-90deg);
-moz-transform:rotate(-90deg);
filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}
</style>
A alternativa final que encontrei é criar uma versão paisagem em um PDF. Você pode apontar para isso quando o usuário seleciona imprimir, imprime o PDF. No entanto, não consegui fazer isso imprimir automaticamente no IE7.
<link media="print" rel="Alternate" href="print.pdf">
Concluindo, em alguns navegadores, é fácil usar a opção @page size, no entanto, em muitos navegadores, não há um caminho certo e isso dependeria do seu conteúdo e ambiente. Talvez por isso, o Google Documents cria um PDF quando a impressão é selecionada e permite que o usuário abra e imprima isso.
@page size
Parece não funcionar em todos os navegadores modernos, apenas no Firefox. Chrome e Opera desconsideram isso, tanto quanto eu vi.size: landscape
é NÃO parte de CSS2.1, embora@page
regras. É, no entanto, parte do CSS3. Para confirmação, tente usar o W3C CSS Validator e insira@page {size: landscape}
e compare os resultados com "Profile" definido como nível 2.1 vs nível 3.Minha solução:
Isso funciona em
IE
,Firefox
eChrome
fonte
class
div estivessem na paisagem e não a página inteira?Não basta apenas girar o conteúdo da página. Aqui está um CSS correto que funciona na maioria dos navegadores (Chrome, Firefox, IE9 +).
Primeiro, defina o corpo
margin
como 0, porque, caso contrário, as margens da página serão maiores que as definidas na caixa de diálogo de impressão. Defina também abackground
cor para visualizar as páginas.margin
,border
Ebackground
são necessários para visualizar páginas.padding
deve ser definido como a margem de impressão necessária. Na caixa de diálogo de impressão, você deve definir as mesmas margens (10 mm neste exemplo).O tamanho da página A4 é 210 mm x 297 mm. Você precisa subtrair margens de impressão do tamanho. E defina o tamanho do conteúdo da página:
Eu uso 276 mm em vez de 277 mm, porque diferentes navegadores dimensionam as páginas de maneira um pouco diferente. Portanto, alguns deles imprimirão conteúdo com 277 mm de altura em duas páginas. A segunda página estará vazia. É mais seguro usar 276mm.
Nós não precisa de nenhum
margin
,border
,padding
,background
na página impressa, então removê-los:Note que a origem da transformação é
0 0
! Além disso, o conteúdo das páginas em paisagem deve ser movido 276 mm para baixo!Além disso, se você tiver uma mistura de páginas retrato e paisagem, o IE diminuirá o zoom. Nós o
-ms-zoom
corrigimos definindo para 1.665. Se você definir para 1,6666 ou algo assim, a borda direita do conteúdo da página poderá ser cortada algumas vezes.Se você precisar de IE8- ou outros navegadores antigos apoio que você pode usar
-webkit-transform
,-moz-transform
,filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)
. Mas para navegadores modernos o suficiente não é necessário.Aqui está uma página de teste:
fonte
Citado em CSS-Discuss Wiki
fonte
Tente adicionar este seu CSS:
fonte
A
size
propriedade é o que você procura, conforme mencionado. Para definir a orientação e o tamanho da sua página durante a impressão, você pode usar o seguinte:Aqui está um link para a documentação da @page .
fonte
.css
arquivo separado ou, se estiver em linha, a declaração inicial do autoestrap (size: a3
) terá precedência.Você pode usar a regra CSS 2 @page que permite definir a propriedade 'size' para paisagem .
fonte
Você também pode usar o modo de gravação de atributo css não padrão do IE somente
fonte
não está funcionando no Firefox 16.0.2, mas está funcionando no Chrome
fonte
Criei um documento em branco do MS com paisagem e o abri no bloco de notas. Copiei e colei o seguinte na minha página html
A visualização de impressão mostra as páginas em um tamanho de paisagem. Isso parece estar funcionando bem no IE e no Chrome, não testado no FF.
fonte
Tentei resolver esse problema uma vez, mas toda a minha pesquisa me levou a controles / plug-ins ActiveX. Não há truques que os navegadores (há 3 anos atrás) permitam alterar as configurações de impressão (número de cópias, tamanho do papel).
Coloquei meus esforços em alertar o usuário com cuidado de que eles precisavam selecionar "paisagem" quando a caixa de diálogo de impressão dos navegadores aparecesse. Também criei uma página de "pré-visualização", que funcionou muito melhor do que o IE6! Nosso aplicativo tinha tabelas de dados muito amplas em alguns relatórios, e a visualização da impressão deixava claro para os usuários quando a tabela se derramava na borda direita do papel (já que o IE6 também não conseguia lidar com a impressão em duas folhas).
E sim, as pessoas ainda estão usando o IE6 agora.
fonte
Se você deseja que esse estilo seja aplicado a uma tabela, crie uma tag div com essa classe de estilo e adicione a tag table nessa tag div e feche a tag div no final.
Esta tabela será impressa apenas na paisagem e todas as outras páginas serão impressas apenas no modo retrato. Mas o problema é que, se o tamanho da tabela é maior que a largura da página, podemos perder algumas linhas e, às vezes, os cabeçalhos também são perdidos. Seja cuidadoso.
Tenha um bom dia.
Obrigado, Naveen Mettapally.
fonte
Tentei a resposta de Denis e encontrei alguns problemas (as páginas de retrato não foram impressas corretamente depois de procurar as páginas de paisagem), então aqui está a minha solução:
fonte
Isso também funcionou para mim:
fonte
Se você deseja ver a paisagem na tela antes de imprimir, bem como a impressão, em seu css, é possível definir a largura para 900px e a altura para 612px.
OP não mencionou o tamanho A4. Presumo que seja o tamanho da letra nos meus números acima.
fonte
Você pode tentar o seguinte:
fonte