I tried posting this question to the eclipse.platform.swt newsgroup but
didn't get a response.
I am trying to use the PaperClips printing library to print on OSX,
however I'm getting an error, the root cause of which is that
GC.isDisposed() == true immediately after it is constructed. After some
experimentation, we found that the GC behaves as expected if I call
Printer.startJob() before constructing the GC. I thought this was odd
since I've never had to do this on Windows. The javadocs do not seem to
have an opinion one way or another on which approach is correct.
There's a reason for not wanting to start a print job when I create my
GC: I need to be able to layout my document on the printer earlier than
I'm ready to actually print it. The print preview control is one
example of this: to preview the printout, I first have to capture the
layout. To capture the layout, I need a GC so I can measure string extents.
I tried surrounding the layout code with calls to startJob() /
cancelJob(), but found that this causes problems later when trying to
print. It appears that a single Printer instance can not be reused for
multiple print jobs on OSX. This has never been a problem on Windows,
and the javadocs seem silent on this topic as well.
I can't tell if my code isn't following the proper printing protocol, if
this is a bug in the OSX SWT implementation, or if it's due to a
platform limitation in OSX. But I could sure use somebody's help to
sort through this.