É possível imprimir páginas HTML com cabeçalhos e rodapés personalizados em cada página impressa?
Gostaria de adicionar a palavra "NÃO CLASSIFICADA" em vermelho, Arial, tamanho 16pt, na parte superior e inferior de todas as páginas impressas , independentemente do conteúdo.
Para esclarecer, se o documento foi impresso em 5 páginas, cada página deve ter o cabeçalho e rodapé personalizados.
Alguém sabe se isso é possível usando HTML / CSS?
pisition: fixed
ethead tbody tfoot
técnicas têm desvantagens que você deve combiná-los, leia mais aqui .Respostas:
Se você pegar o elemento que você deseja que seja o rodapé e defini-lo para a posição: fixo e inferior: 0, quando a página for impressa, ele repetirá esse elemento na parte inferior de cada página impressa. O mesmo funcionaria para um elemento de cabeçalho, apenas defina top: 0.
Por exemplo:
CSS:
fonte
Acredito que a resposta correta é que HTML 5 e CSS3 não têm suporte para impressão de cabeçalho e rodapés na
print
mídia.E enquanto você pode simulá-lo com:
cada um deles possui bugs que os impedem de ser a solução geral ideal.
fonte
@footer
comcontent:"stuff"
ou iguais.Passei a melhor metade do dia encontrando uma solução que realmente funcionou para mim e pensei em compartilhar o que fiz. O problema com as soluções acima que eu estava tendo era que todos os meus elementos de parágrafo se sobreporiam ao rodapé que eu queria na parte inferior da página. Para contornar isso, usei o seguinte CSS:
A
page-break-inside
favorp
econtent-block
foi crucial para mim. Sempre que tenho umap
sequênciah*
, envolvo os dois em umdiv class = "content-block">
para garantir que eles fiquem juntos e não quebrem.Espero que alguém ache isso útil porque levei cerca de 3 horas para descobrir (também sou novo em CSS / HTML, então é isso ...)
EDITAR
Por uma solicitação nos comentários, estou adicionando um documento HTML de exemplo. Você deseja copiar isso em um arquivo HTML, abri-lo e optar por imprimir a página. A visualização de impressão deve mostrar este trabalho. Funcionou no Firefox e no IE do meu lado, mas o Chrome fez a fonte pequena o suficiente para caber em uma página, por isso não funcionou lá.
fonte
Há anos que procuro uma solução e encontrei este post sobre como imprimir um rodapé que funciona em várias páginas sem sobrepor o conteúdo da página.
Meu requisito era o IE8, até agora descobri que isso não funciona no Chrome. [ atualização ] Desde 1 de março de 2018, ele também funciona no Chrome
Este exemplo usa tabelas e o elemento tfoot configurando o estilo css:
fonte
a solução mágica é realmente colocar tudo em uma única mesa.
thead : isto é para o cabeçalho repetido.
tfoot : o rodapé repetido.
tbody : o conteúdo.
e faça um único tr, td e coloque tudo em uma div
CÓDIGO ::
extra : para evitar a sobreposição de várias páginas. gostar:
o que resulta em um estouro que fará com que as coisas se sobreponham ao cabeçalho nas quebras de página.
então >> use:
page-break-inside: avoid !important;
com esta classearticle
.bem simples, espero que isso lhe dê o melhor resultado que você deseja.
Cumprimentos. ;)
fonte
De desta pergunta - adicionar os seguintes estilos para uma folha de estilo somente impressão. Esta solução funcionará no IE e Firefox, mas não no Chrome (a partir da versão 21):
fonte
Use quebras de página para definir os estilos em CSS:
Em seguida, adicione a marcação no documento nos locais apropriados:
Referências
Mídia paginada CSS: quebras de página
MDN: quebra de página antes
MDN: break-before
Layout de várias colunas
Impressão XHTML: Segunda Edição
Bug do Webkit 5097: A quebra de página CSS2 não funciona
Imprimir HTML FAQ: O programa respeitará os estilos CSS, como quebra de página depois?
Como lidar com quebras de página ao imprimir uma tabela HTML grande
fonte
if the document was printed onto 5 pages
should
não significadon't
.If
(apenas um exemplo) a palavraif
(apenas um exemplo) é usada pelo OP eif
(apenas um exemplo) o OP não está mais ativo, é melhor fornecer uma resposta específicaif
(apenas um exemplo) já existem respostas genéricas eif
(apenas um exemplo) as linguagens (HTML / CSS) e as especificações em questão são projetadas para evitar indiretos e simplificar a documentação ?If
(apenas um exemplo) então, por que? Caso contrário, por que não?Tentei travar essa batalha fútil combinando regras tfoot & css, mas funcionou apenas no Firefox :(. Ao usar css simples, o conteúdo flui sobre o rodapé. Ao usar tfoot, o rodapé na última página não fica bem na parte inferior Isso ocorre porque os rodapés das tabelas destinam-se a tabelas, não a páginas físicas.Testado no Chrome 16, Opera 11, Firefox 3 e 6 e IE6.
fonte
Uma abordagem que funciona apenas para adicionar cabeçalhos a cada página é agrupar seu conteúdo em um
<table>
e, em seguida, colocar o conteúdo do cabeçalho em uma<thead>
tag e o conteúdo em uma<tbody>
tag, da seguinte maneira:Isso funciona no Chrome, não 100% certo de outros navegadores.
fonte
Se você pode usar o javascipt, peça ao cliente que organize o conteúdo usando javascript para colocar elementos com base no espaço disponível.
Você pode usar o plug-in jquery columnizer para distribuir dinamicamente seu conteúdo em blocos de tamanho fixo e posicionar seus cabeçalhos e rodapés como parte da rotina de renderização. http://welcome.totheinter.net/columnizer-jquery-plugin/
Veja o exemplo 10 http://welcome.totheinter.net/autocolumn/sample10.html
O navegador ainda adicionará seus próprios cabeçalhos ou rodapés, se ativado no sistema operacional. O layout consistente entre plataformas e navegadores provavelmente exigirá css condicional.
fonte
Estou surpreso e impressionado que o Chrome tenha um suporte tão terrível à impressão CSS.
Minha tarefa exigia mostrar um rodapé um pouco diferente em cada página. No caso mais simples, apenas um capítulo e número de página incrementais. Em casos mais complexos, mais texto no rodapé - por exemplo, várias notas de rodapé - que podem expandi-lo em tamanho, fazendo com que o conteúdo da área de conteúdo dessa página seja reduzido e parte dela reflua para a próxima página.
A impressão CSS não pode resolver isso, pelo menos não com o suporte de navegador de má qualidade hoje. Mas, saindo da impressão, o CSS3 pode fazer muito trabalho pesado:
https://jsfiddle.net/b9chris/moctxd2a/29/
SCSS:
Há um pouco mais de código no exemplo, incluindo alguns Cat Ipsum; mas o js em uso está aí apenas para demonstrar quanto o cabeçalho / rodapé pode variar sem interromper a paginação. A chave é realmente pegar um truque de aderência na parte inferior da coluna do CSS Flexbox e aplicá-lo a uma página de uma altura fixa conhecida - nesse caso, um pedaço de 8,5 "x11" de papel tamanho carta americano, com 0,5 "margens saindo
width: 7.5in
eheight: 10in
exatamente. Depois que o contêiner do CSS flex souber suas dimensões exatas (div.page
), é fácil obter o cabeçalho e o rodapé para expandir e contrair da maneira que fazem na tipografia convencional.O que resta é fluir o conteúdo da página quando o rodapé, por exemplo, aumenta para 8 notas de rodapé e não 3. No meu caso, o conteúdo é fixo o suficiente para que eu não precise me preocupar com isso, mas tenho certeza de que há uma maneira para fazer isso. Uma abordagem que vem à mente é transformar o cabeçalho e o rodapé em flutuadores com 100% de largura e posicioná-los com Javascript. O navegador manipulará as interrupções para o fluxo regular de conteúdo automaticamente.
fonte
É algo que você deseja imprimir apenas? Você pode adicioná-lo a todas as páginas do seu site e usar CSS para definir a tag como uma mídia somente para impressão.
Como exemplo, este poderia ser um cabeçalho de exemplo:
E no seu CSS, faça algo assim:
Finalmente, para incluir o cabeçalho / rodapé em todas as páginas, você pode usar inclusões no servidor ou, se houver alguma página gerada com PHP ou ASP, basta codificá-la para um arquivo comum.
Editar:
Esta resposta tem como objetivo fornecer uma maneira de mostrar algo na versão impressa física de um documento, sem mostrar o contrário. No entanto, assim como os comentários sugerem, ele não resolve o problema de rodapé em várias páginas impressas quando o conteúdo é excedido.
Vou deixar aqui caso seja útil, no entanto.
fonte
Se você estiver usando um mecanismo de modelo como o Asp.net Razor Engine ou o Angular, acho que você deve gerar novamente sua página e dividir a página em várias páginas, para marcar livremente cada página e colocar o cabeçalho e rodapé no tema. Um exemplo pode ser o seguinte:
fonte
Eu encontrei uma solução. A idéia básica é criar uma tabela e, na seção thead, colocar os dados do cabeçalho em tr e pela força css para mostrar que tr somente na impressão não está na tela, então o cabeçalho normal deve ser forçado a mostrar apenas na tela não impressa. 100% trabalhando em muitas páginas impressas. o código de amostra está aqui
fonte
Tente isso, para mim está funcionando no Chrome, Firefox e Safari. Você fixará o cabeçalho e rodapé em cada página sem sobrepor o conteúdo da página
CSS
HTML
fonte
Baseado em algum post, acho que
position: fixed
funciona para mim.Pressione Ctrl + P no chrome, veja o texto do cabeçalho e rodapé em cada página. Espero que ajude
fonte