My library has support for @page rules, but that's actually pretty basic. I needed more advanced headers/footers and added support for in-html headers/footers like this: In your <body> you cna define headers/footers by wrapping content in a <section> tag. For example:
<body> <section> <header>... any HTML here, full CSS support</header>
<div> Some normal flow content</div>
<footer>Your footer HTML</footer>
</section>
</body>This structure is purely optional, but it's a really convinient way of designing pages with different styles in the same document. An HTML file can have any number of these sections meaning you can generate a PDF with different headers/footers.
Some other bits: It has support for 100% height that match the entire page, it can handle forced page breaks inside flexbox containers (Chrome doesn't even try ... just ignores it) and also follows page-break: avoid correctly - so it doesn't randomly split table rows for example.
I started small as a toy project, but gradually implemented full support for proper block context, flexbox layout, CSS variables, tables, etc. to the point where I have almost full support of all major CSS features (even math functions like calc(), min(), max()).
I'm cleaning up the code right now and will upload it later today or maybe tomorrow here: https://github.com/PureGoPDF