Executando verificação de segurança...
4

🖨📄 Quais são as melhores práticas para estilizar uma página web para impressão/salvar como PDF?

Nunca tive a oportunidade de me aprofundar mais nesse quesito de estilização.

Atualmente me surgiu essa demanda em que o cliente quer salvar como PDF uma página web e estou bastante perdido em como fazer.

As cores dessa página são essenciais que sejam exibidas como estão na web.

Nela existem alguns gráficos de barra e do tipo radar também. Eles devem ser mantidos.

Creio que alguns elementos como Header, Footer, etc, possam ser ocultados.

Estou usando Sass e Nuxt como framework.

Carregando publicação patrocinada...
6

Um tempo atrás fiz um apanhado de várias coisas úteis para preparar páginas para impressão: Preparando páginas para impressão com CSS, Paged.js ou outras ferramentas. Recomendo ler a publicação. Talvez o básico com CSS já te sirva. Além de usar size, margin, @page e @media print, tem essas dicas mais específicas:

  • h1,h2,h3,h4,h5,h6 {break-after: avoid-page;}: Evita imprimir cabeçalhos de seção na parte inferior de uma página, deixando o conteúdo da seção sem cabeçalho na parte superior da página seguinte.
  • img, svg, table, canvas {break-inside: avoid;}: Dá preferência à imprimir gráficos e figuras em páginas inteiras em vez de dividi-las em páginas.
  • a::after {content: " (" attr(href) ")";}: Imprime a URL de cada link em vez de ter links apenas como texto sublinhado.
  • footer {page-break-inside: avoid;}: Não quebrar o footer em páginas separadas.
  • summary {page-break-after: avoid;}: Não quebrar após o elemento summary (para o elemento details). Se os elementos de details nunca forem maiores que a página, details {break-inside: prevent;} pode ser útil.
  • body {min-width: 992px;}: Evita renderizar a versão mobile de uma página.
5

a melhor prática é utilizar @media print em CSS. Esta media query permite definir estilos específicos que serão aplicados apenas quando a página for impressa ou salva como PDF.

Boas práticas essenciais:

@media print: Encapsule todos os estilos específicos para impressão dentro de um bloco @media print { ... }. Isso separa os estilos de impressão dos estilos de tela, garantindo que as alterações não afetem a visualização web normal. https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_media_queries/Printing

Paged Media: Utilize propriedades CSS como page-break-before, page-break-after, e page-break-inside para controlar quebras de página e otimizar o layout para o formato de página impressa. Consulte a documentação MDN sobre Paged Media para detalhes: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_paged_media

1

@zehguilherme preciso fazer um video sobre uma ferramenta que fiz, era pra atender varios clientes em situações distintas, as vezes o mesmo clinte imprimia em formatos diferentes, criei algo bem simples, daria pra portar pra uma extensão. Teria que saber qual é sua situação quais sites entra etc. No meu caso é uso internto, basta eu selecionar o texto e alterar a fonte por exemplo, ele pega a tag do texto selecionado, a largura tbm dava pra mexer etc. Agora se vc estiver em varios sites diferentes pode contruir uma extensão que so deixe o que vc quer!