what do you think instead to generate your report as a real PDF file (maybe a temporary file), and then let the Client Application ask to the Desktop default application to open it (instead of having to handle the display etc inside your app) ?
FYI, you can also use ApplicationContext.open() for this.