Windows – WorldTransform on the Printer’s Canvas can be a challenge…
Posted by jpluimers on 2017/09/05
// Don't use SetWorldTransform [WayBack] on Printer.
// Some drivers don't handle it correct
// We will only use ModifyWorldTransform [WayBack]
// Let Windows and Driver do the Job
Source: Hello, I use a component that do some nice things on the Printer’s Canvas…… [WayBack]
–jeroen






jpluimers said
Joe C Hecht commenting via https://plus.google.com/+JeroenPluimers/posts/a9DGcYBemCX
It has been a few years, but If I recall correctly, this is not a driver issue (for any print driver that would count: IE a monolithic driver. I am pretty sure the Uni drivers do not get an opportunity at these kind of calls or data – they just ship bits). It’s been awhile, but in short, it is unlikely the driver would work at all if it did not process its points and XFORM equivalents correctly to begin with (and would likely fail the compatibility test), noting that none of these “World Transform” calls are actually handled at the driver level (GDI handles it, and ships a hand full of very low level render calls to the driver).
It is also worth noting there is considerable distance between the GDI and a print driver (an insane amount of stuff like spooling process exist in between), and often enough, a driver gets blamed for something that went south way up stream).
FWIW, it is best to do your own transforms, using the industry standard transform function. In this case: simply send the coordinate as:
x’ = x * eM11 + y * eM21 + eDx;
y’ = x * eM12 + y * eM22 + eDy;
Joe