Ich habe viele Websites über das Drucken von Seitenzahlen gelesen, konnte sie jedoch nicht für meine HTML-Seite anzeigen, wenn ich versuche, sie zu drucken.
Der CSS-Code lautet also als Nächstes:
@page {
margin: 10%;
@top-center {
font-family: sans-serif;
font-weight: bold;
font-size: 2em;
content: counter(page);
}
}
Ich habe versucht, diese Seitenregel einzufügen
@media all {
*CSS code*
}
Und außerhalb davon @media print
habe ich versucht, es einzufügen , aber nichts hat mir geholfen, die Seitenzahlen auf meiner Seite anzuzeigen. Ich habe versucht, FireFox und Chrome zu verwenden (basierend auf WebKit, wie Sie wissen). Ich denke, das Problem liegt in meinem HTML- oder CSS-Code.
Könnte mir jemand ein Beispiel für die Implementierung dieser @page
Regel auf der großen HTML-Seite mit mehreren Seiten zeigen? Ich brauche nur den Code der HTML-Seite und den Code der CSS-Datei, das funktioniert.
PS Ich habe die neuesten unterstützten Versionen von Browsern.
quelle
Antworten:
Da @page mit Seitennummern momentan nicht in Browsern funktioniert, habe ich nach Alternativen gesucht.
Ich habe eine Antwort von Oliver Kohll gefunden .
Ich werde es hier erneut veröffentlichen, damit jeder es leichter finden kann:
Für diese Antwort verwenden wir nicht @page , eine reine CSS-Antwort, sondern arbeiten in FireFox 20+ -Versionen. Hier ist der Link eines Beispiels.
Das CSS lautet:
#content { display: table; } #pageFooter { display: table-footer-group; } #pageFooter:after { counter-increment: page; content: counter(page); }
Und der HTML-Code lautet:
<div id="content"> <div id="pageFooter">Page </div> multi-page content here... </div>
Auf diese Weise können Sie Ihre Seitenzahl anpassen, indem Sie die Parameter in #pageFooter bearbeiten . Mein Beispiel:
#pageFooter:after { counter-increment: page; content:"Page " counter(page); left: 0; top: 100%; white-space: nowrap; z-index: 20; -moz-border-radius: 5px; -moz-box-shadow: 0px 0px 4px #222; background-image: -moz-linear-gradient(top, #eeeeee, #cccccc); }
Dieser Trick hat bei mir gut funktioniert. Hoffe es wird dir helfen.
quelle
counter-increment: page
zum CSS-Selektor für das Element und nicht zum Pseudoelement:after
und behalte dascontent: counter(page)
im:after
Selektor. Es funktionierte in Chrome 71, Safari 12, nicht sicher über andere Browser.Versuchen Sie, https://www.pagedjs.org/ zu verwenden . Es füllt den Seitenzähler sowie die Kopf- / Fußzeilenfunktionalität für alle gängigen Browser aus .
@page { @bottom-left { content: counter(page) ' of ' counter(pages); } }
Es ist so viel komfortabler als Alternativen wie PrinceXML, Antennahouse, WeasyPrince, PDFReactor usw.
Und es ist völlig kostenlos! Keine Preisgestaltung oder was auch immer. Es hat mir wirklich das Leben gerettet!
quelle
Können Sie dies versuchen, können Sie verwenden
content: counter(page);
@page { @bottom-left { content: counter(page) "/" counter(pages); } }
Ref: http://www.w3.org/TR/CSS21/generate.html#counters
http://www.princexml.com/doc/9.0/page-numbers/
quelle
Dieses Javascript fügt absolut positionierte Divs mit Seitenzahlen in der rechten unteren Ecke hinzu und funktioniert in allen Browsern.
A4-Höhe = 297 mm = 1123 Pixel (96 dpi)
<html> <head> <style type="text/css"> @page { size: A4; margin: 0; } body { margin: 0; } </style> </head> <body> <script type="text/javascript"> window.onload = addPageNumbers; function addPageNumbers() { var totalPages = Math.ceil(document.body.scrollHeight / 1123); //842px A4 pageheight for 72dpi, 1123px A4 pageheight for 96dpi, for (var i = 1; i <= totalPages; i++) { var pageNumberDiv = document.createElement("div"); var pageNumber = document.createTextNode("Page " + i + " of " + totalPages); pageNumberDiv.style.position = "absolute"; pageNumberDiv.style.top = "calc((" + i + " * (297mm - 0.5px)) - 40px)"; //297mm A4 pageheight; 0,5px unknown needed necessary correction value; additional wanted 40px margin from bottom(own element height included) pageNumberDiv.style.height = "16px"; pageNumberDiv.appendChild(pageNumber); document.body.insertBefore(pageNumberDiv, document.getElementById("content")); pageNumberDiv.style.left = "calc(100% - (" + pageNumberDiv.offsetWidth + "px + 20px))"; } } </script> <div id="content"> Lorem ipsum.... </div> </body> </html>
quelle
Das ist, was du willst:
@page { @bottom-right { content: counter(page) " of " counter(pages); } }
quelle
WeasyPrint==0.42.2
**@page { margin-top:21% !important; @top-left{ content: element(header); } @bottom-left { content: element(footer } div.header { position: running(header); } div.footer { position: running(footer); border-bottom: 2px solid black; } .pagenumber:before { content: counter(page); } .pagecount:before { content: counter(pages); } <div class="footer" style="font-size:12pt; font-family: Arial; font-family: Arial;"> <span>Page <span class="pagenumber"/> of <span class="pagecount"/></span> </div >**
quelle
Margin boxes
werden überhaupt nicht unterstützt