Largura segura em pixels para imprimir páginas da web?

86

Qual é a largura segura em pixels para imprimir uma página da web?

Minha página inclui imagens grandes e quero ter certeza de que não serão cortadas quando impressas.

Eu sei sobre as diferentes margens do navegador e tamanhos de papel Carta EUA / DIN A4. Portanto, temos o tamanho de carta padrão e alguns valores de DPI padrão. Mas posso convertê-los em valores de pixel para especificar no widthatributo da imagem ?

aemkei
fonte
3
em vez de usar a largura em pixels, você deve usar o width:autoque irá ajustar a largura do conteúdo à largura do papel
Marko Vranjkovic

Respostas:

89

Quanto a uma verdadeira “resposta universal”, não posso dar. Posso, no entanto, fornecer uma resposta simples e definitiva para alguns detalhes ...

670 PIXELS

Pelo menos essa parece ser uma resposta segura para produtos Microsoft. Li muitas sugestões, incluindo 675, mas depois de testar eu mesmo 670 foi o que eu descobri.

Todos os DPI, problemas de margem, diferenças de hardware à parte, esta resposta é baseada no fato de que se eu usar a visualização de impressão no IE9 (com margens padrão) - e DEFINIR O TAMANHO DE IMPRESSÃO PARA 100% em vez do padrão de "reduzir para caber" , tudo cabe na página sem ser cortado nesta largura.

Se eu enviar um e-mail em HTML para mim mesmo e recebê-lo com o Windows Live Mail 2011 (o que se tornou o Outlook Express) e imprimir a página com largura de 670 - novamente, tudo se encaixa. Isso é válido se eu enviar para uma cópia impressa real ou um arquivo MS XPS (impressão virtual).

Antes de experimentar, eu estava usando uma largura arbitrária de 700. Em todos os cenários mencionados acima, parte da página estava sendo cortada. Quando eu reduzi para 670, tudo se encaixou perfeitamente.

Quanto a como eu defino a largura - eu apenas usei uma tabela html primitiva “wrapper” e defini sua largura como 670.

Se você pode ditar o software do usuário final, essas questões podem ser diretas. Se você não puder (como geralmente é o caso, é claro), você pode testar detalhes como quais navegadores estão usando, etc. e codificar as soluções para os mais importantes. Entre o IE e o FF, você cobrirá literalmente cerca de 90% dos usuários da web. Coloque algum outro código para "todos os outros" que geralmente parece funcionar e dê o basta ...

Jonathan
fonte
Eu gostaria apenas de adicionar um comentário que embora no momento desta resposta o FF e o IE possam ter mantido entre eles 90% de participação nos navegadores usados ​​(acho improvável com o Google oferecendo o Chrome para qualquer pessoa que pesquisou com qualquer outro (que no momento é um navegador melhor e mais leve), mas é improvável que ainda o façam, já que as tendências mudam e a participação do navegador muda frequentemente como qualquer outra participação de mercado.
Chris
Isso responde à pergunta, embora seja obviamente mais complicado do que um simples tamanho px.
rune711
46

Não é tão simples quanto parece. Acabei de me deparar com uma pergunta semelhante, e aqui está o que eu consegui: primeiro, um pequeno histórico sobre a wikipedia .

Em seguida, em CSS, para papel, eles têm pt, que é ponto, ou 1/72 polegada. Portanto, se você quiser ter o mesmo tamanho de imagem do monitor, primeiro você deve saber o DPI / PPI do seu monitor (geralmente 96, conforme mencionado no artigo da Wikipedia), depois convertê-lo para polegadas e depois convertê-lo para pontos (divida por 72).

Mas, novamente, os navegadores têm todos os tipos de problemas com conteúdo imprimível, por exemplo, se você tentar usar tags css flutuantes, os navegadores baseados no Gecko cortarão suas imagens no meio da página, mesmo se você usar quebra de página dentro: evitar ; em suas imagens (veja aqui, no sistema de rastreamento de bugs do Mozilla ).

Há (muito) mais informações sobre como imprimir a partir de um navegador neste artigo em A List Apart .

Além disso, você deve lidar com a largura "Reduzir para caber" na visualização da impressão e os vários tamanhos e orientações de papel.

Então, ou você apenas descobre um bom tamanho de imagem em polegadas, quero dizer, pontos, (7,1 "* 72 = 511,2 então width: 511pt; funcionaria para papel tamanho carta), independentemente dos tamanhos de pixel, ou larguras percentuais de largura e baseie suas larguras de imagem no tamanho do papel.

Boa sorte...

Gyuri
fonte
Na verdade, foi mais fácil apenas criar uma versão GD da imagem PHP do material que eu queria imprimir (cartões postais, panfletos, etc.), que acabei de fornecer informações de um banco de dados e ele se reformatou de acordo. Eu apenas mantive a proporção de pixels correta. Postal 4x6 (350dpi) == 2135x1435 px
Michael J. Calkins
20

Uma solução para o problema que encontrei foi apenas definir a largura em polegadas. Até agora eu apenas testei / confirmei isso funcionando no Chrome. Funcionou bem para o que eu estava usando (para imprimir uma folha de 8,5 x 11)

@media print {
    .printEl { 
        width: 8.5in;
        height: 11in;
    }
}
jHouse
fonte
5
Você não está levando em consideração as margens da página. Ou a possibilidade de tamanhos de papel A4.
Blazemonger de
1
Isso foi perfeito para mim, faz muito sentido.
leedotpang
@Blazemonger com @media print, você pode definir aqueles. Você pode definir size: letterou size: A4. smashingmagazine.com/2015/01/designing-for-print-with-css
J.Ko
@ J.Ko Esse não era o ponto; é o usuário final que pode usar papel A4 ou carta, e o designer CSS não pode ter certeza de qual está disponível para o usuário.
Blazemonger de
10

Para impressão, não defino nenhuma largura e removo quaisquer obstáculos que impeçam o layout de impressão de ter uma largura dinâmica. Ou seja, se você tornar a janela do navegador cada vez menor, nenhum conteúdo será cortado / oculto, mas o documento ficará mais longo. Assim, você pode ter certeza que o resto ficará a cargo do criador da impressora / pdf.

E os elementos com largura fixa, como imagens ou tabelas?

Imagens

Opções em que posso pensar:

  • dimensione as imagens no CSS de impressão para uma largura que você pode assumir que caberá em qualquer caso, use pt, não px (mas a impressão precisará de mais pontos / unidades de qualquer maneira, então isso dificilmente será um problema)
  • excluir de ser impresso

Mesas

  • remova a largura fixa
  • use paisagem se você realmente tiver tabelas com muitas informações
  • não use tabelas para fins de layout
  • excluir de ser impresso
  • extraia o conteúdo, imprima-o como parágrafos

http://www.intensivstation.ch/en/css/print/

ou qualquer outro resultado do Google para combinações de: CSS, impressão, mídia, layout

Markus
fonte
2
Mas e os elementos com largura fixa, como imagens e tabelas?
aemkei
5

Uma solução para garantir que as imagens não sejam cortadas quando impressas em uma página da Web é ter a seguinte regra CSS:

@media print { 
  img { 
    max-width:100% !important;
  } 
}
não ligar
fonte
4

Uma impressora não entende pixels, entende pontos (pt em CSS). A melhor solução é escrever um CSS extra para impressão, com todas as medidas em pontos.

Então, no seu código HTML, na seção head, coloque:

<link href="style.css" rel="stylesheet" type="text/css" media="screen">
<link href="style_print.css" rel="stylesheet" type="text/css" media="print">
ARemesal
fonte
Mas as imagens precisam de atributos de largura e altura especificados em pixels. Preciso converter os valores PT em pixel com base no DPI e dimensão padrão da impressora.
aemkei
Então você tem que brincar com os contêineres de imagem ... ou aplicar tentativa e erro;) No entanto, acho que usar dois arquivos CSS separados, um para tela e outro para impressão, é uma boa prática.
ARemesal
1
dê à <img>tag um surroundig, <div>o div obtém largura e altura em pt e o img obtémwidth:100%; height:100%;
Hafenkranich
0

Duvido que haja um ... Depende do navegador, da impressora (físico máximo dpi) e do driver, do tamanho do papel como você disse (e talvez eu queira imprimir em papel B5 também ...), das configurações ( paisagem ou retrato?), além disso, você frequentemente pode alterar a escala (porcentagem), etc.
Deixe os usuários ajustar suas configurações ...

PhiLho
fonte