I've had a bit more time to think about some simple rules: as a rough guide, to convert the output from a standard PCLXL driver to a 'user-defined stream' suitable for use as a macro equivalent, you will need to do, as a minimum:[ul]
[li]Remove the UEL sequence.[/li]
[li]Remove the PJL statements.[/li]
[li](Optionally) replace the original stream header with an alternative (e.g. different comment field).[/li]
[li]Replace the BeginSession operator (and its preceding attribute list) with the equivalent SetPageScale operator, in order to maintain independence of user units between the overlay and the parent stream.[/li]
[li]Ignore all other operators (and their preceding attribute lists) up to, and including, the first BeginPage operator (except perhaps for embedded font downloads, etc.).[/li]
[li]Retain subsequent operators (and their preceding attribute lists) up to the first EndPage operator, except for SetPageDefaultCTM (which would upset, for example, binding margin settings made by the parent stream.[/li]
[li]Remove the first EndPage operator (including its preceding attribute list), and all subsequent data.[/li]
[/ul]