Y si haces un truco?
Pones un texto (una especie de código que sea siempre distinto como pueda ser el número de milisegundos pasados desde el 1 de enero de 1970, es decir:getTime()) en color blanco... o en el color de la hoja, con una capa encima para que no lo vea al seleccionar toda la hoja. Ni se vea a simple vista, peo si se imprime la hoja sí aparezca. Cuando se dé al botón de seguir aparece un prompt preguntando dicho texto que sólo se ve en la hoja imprimida. Si no lo pone no le deja seguir. Eso unido a una explicación de donde puede ver dicho texto (en el parte impreso) puede tener ese resultado que buscas.
Aquí te pongo un ejemplo sencillo para que veas como sería:
Código PHP:
<html>
<head>
<script>
pepe=new Date;
pepe=pepe.getTime();
function comprobar(){
pregunta=prompt("Por favor, escriba el código que aparece en la hoja escrita","");
if(pregunta==pepe){location.href="siguiente.html"}
else {alert("Por favor, imprima esta hoja");}
}
</script>
</head>
<body>
<p style="height:100px;
width:100px;
position:absolute;
left:100px;
top:100px;
color:white;">
<script>
document.write(pepe);
</script>
</p>
<div style="height:100px;
width:100px;
position:absolute;
left:100px;
top:100px;
color:white;">
</div>
<br>
<br>
<br>
<input type="button"
name="boton"
id="boton"
value="imprimir"
onclick="print();">
<input type="button"
name="boton"
id="boton"
value="seguir"
onclick="comprobar();">
</body>
</html>