[reportlab-users] Lines Print Wrong?
Tim Roberts
reportlab-users@reportlab.com
Mon, 04 Aug 2003 09:44:24 -0700
I saw an unusual thing this week using ReportLab. I don't believe the
problem was actually in ReportLab, but I wanted to see if it was familiar to
anyone.
I need to embed a 3x4" street map on a registration form. For debugging, I
created the map in a separate Python module printing to a full page so I
could debug and adjust it more easily. I used my own virtual coordinate
system so that the streets lined up on 1x1 unit grid, and then did my own
scaling (ax+b, cy+d) every time I touched the canvas. The scaling was
roughly 15 points per unit.
This worked, and I could print the map either standalone or embedded in my
form. After a while, I realized I could let Postscript do the scaling for me
and simplify my code. So, I eliminated my scaling, and used canvas.transform
to do the 15:1 upscale for the full page, and about 3.5:1 for the embedded
size.
After I did that, both the standalone and embedded versions of the map looked
100% correct in Acrobat, but when I printed the embedded version, all of my
lines suddenly became about 16 points wide. I tried it on two different
printers (both HP PCL) with the same results: screen preview fine (even when
zoomed), printed version bogus. Yes, I remembered to change the
setStrokeWidth calls to compensate for the new scaling; the stroke width was
0.15 units, which was about 1/2 point for the embedded version. As I said,
the preview was exactly right.
While playing with this, as an experiement, I tried multiplying all of my
coordinates and sizes by 10 and adjusting the transform correspondingly.
Poof, problem went away.
My GUESS is that Acrobat's GDI conversion is missing a line width setting
somewhere based on some edge condition. Anyone ever seen this kind of thing
before?
--
- Tim Roberts, timr@probo.com
Providenza & Boekelheide, Inc.