This is how it should work for the watermark...
div.watermark{
display:none;
}
and then for @media print
div.watermark{
display:block;
position:fixed;
z-index:-1;
width:100%;
height:100%;
}
div.content > *:first-child,x:-moz-any-link{margin-top:0;}/* ff only */
div.watermark,x:-moz-any-link{z-index:auto;}/* ff only */
div.watermark,x:-moz-any-link,x:default{z-index:-1;}/* ff3 only */
@media all and (min-width: 0px){div.watermark{width:8.5in;}} /* opera only */
div.watermark div{
position:absolute;
left:0;
width:99%;
}
I think this article explains what you want to do effectively http://www.andypemberton.com/css/print-watermarks-with-css/ (archived link)
Unfortunately this is still an issue with webkit.
Solution: You have to clone your image class with javascript after every say a standard page size in pixels and keep it hidden for screen and add...
page-break-before: always;
page-break-inside: avoid;
display:block
Look at this answer for details https://stackoverflow.com/a/19170212/1278540
And look at this demo http://fiddle.jshell.net/jaap/7ZGVv/2/show/
Not bad IMO.