I am trying to add page numbers to my html print out and came across Counter Increment
. I tried using it for my pages, but it is only showing Page 1
every time. Help would be appreciated.
P.S. I have already tried following other solutions similar to mine, but none work so far. My case is different because I am using it inside of a table header.
.page-number{
text-align:center;
}
thead {
display:table-header-group;
}
@media print{
.page-number:before{
counter-increment: page;
content: "Page " counter(page);
}
}
@media screen{
.page-number:before {
counter-increment: page;
content: "Page " counter(page);
}
}
<table class="SetupMainTable">
<thead>
<tr>
<td colspan="4">Company Name</td>
<td colspan="5" class="right" style="font-size:25px;">Daily Time Ticket</td>
<td colspan="1"><div class="page-number"></div></td>
</tr>
</thead>
</table>
Eg:Example that print's same Page 1
on all pages
ctrl+p
to testIt Should print incremental Page 1
Page 2
Page 3
number on all pages after pressing ctrl + p
Print
Long story short:
Press Ctrl
+ P
→ Print current window → Add a footer in the bottom of the page(Current Window) like Page <counter>
counter
is a number starting from 1 .
So the Page will be like
PS: Counter shouldn't visible on the page 😀
So I was never able to get this to work for my case. I know other cases may work with above answers, but I could not get the Front-End alone to generate the dynamic page numbers.
I used help from my back-end, which is PHP in my case and used a plugin called wkhtmltopdf.
This solved my issue, https://stackoverflow.com/a/13496899/6000966.
I was able to remove the logic from the front-end and place it on the back-end and let it handle the dynamic page numbers.
I would advise if the HTML pages are using dynamic data from the back-end, something like this is the way to go.
Static pages on the other hand should work with the above answers.
I found that code in one Russian article. That code adds pagination to each page:
@page:right{
@bottom-right {
content: counter(page);
}
}
@page:left{
@bottom-left {
content: counter(page);
}
}
And code below can show number of page of their total like "Page 3 of 120".
@page:left{
@bottom-left {
content: "Page " counter(page) " of " counter(pages);
}
}
Ciao,
not sure about your intended output but if you try this snippet I think it does what you are asking [i.e. incrementing the page number]. The code was readapted from this original sample
body {
/* Set "my-sec-counter" to 0 */
counter-reset: my-sec-counter;
}
h2::before {
/* Increment "my-sec-counter" by 1 */
counter-increment: my-sec-counter;
content: "Section " counter(my-sec-counter) ". ";
}
#page-number::before {
/* Increment "my-sec-counter" by 1 */
counter-increment: my-sec-counter;
content: "Page " counter(my-sec-counter) ". ";
}
<h2>HTML Tutorial</h2>
<h2>CSS Tutorial</h2>
<h2>JavaScript Tutorial</h2>
<h2>Bootstrap Tutorial</h2>
<h2>SQL Tutorial</h2>
<h2>PHP Tutorial</h2>
<tr>
<td colspan="4">Company Name</td>
<td colspan="5" class="right" style="font-size:25px;">Daily Time Ticket</td>
<td colspan="1">
<div id="page-number"></div>
</td>
</tr>
<tr>
<td colspan="4">Company Name</td>
<td colspan="5" class="right" style="font-size:25px;">Daily Time Ticket</td>
<td colspan="1">
<div id="page-number"></div>
</td>
</tr>
Hope it helps and have a good day,
Antonino
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With