Skip to Content
0
Former Member
Jul 02, 2009 at 03:08 AM

trying to display a pdf exported report file in browser

133 Views

i am getting null pointer exceprtion when try to close the report browser.

the same code is working perfectly in adobe reader 8. i am getting this problem adobe reader 9.

i am exporting the report file as a pdf and saving locally. report is displayed in the browser from local directory.

till its working fine. when close the report file.. i am getting the following error:

java.lang.NullPointerException

at org.eclipse.swt.ole.win32.OleClientSite.onPaint(OleClientSite.java:921)

at org.eclipse.swt.ole.win32.OleClientSite.access$2(OleClientSite.java:906)

at org.eclipse.swt.ole.win32.OleClientSite$1.handleEvent(OleClientSite.java:131)

at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1012)

at org.eclipse.swt.widgets.Composite.WM_PAINT(Composite.java:1424)

at org.eclipse.swt.widgets.Control.windowProc(Control.java:3842)

at org.eclipse.swt.widgets.Display.windowProc(Display.java:4541)

at org.eclipse.swt.internal.ole.win32.COM.CoFreeUnusedLibraries(Native Method)

at org.eclipse.swt.ole.win32.OleClientSite.releaseObjectInterfaces(OleClientSite.java:1084)

at org.eclipse.swt.ole.win32.OleControlSite.releaseObjectInterfaces(OleControlSite.java:683)

at org.eclipse.swt.ole.win32.OleClientSite.onDispose(OleClientSite.java:852)

at org.eclipse.swt.ole.win32.OleClientSite.access$1(OleClientSite.java:847)

at org.eclipse.swt.ole.win32.OleClientSite$1.handleEvent(OleClientSite.java:128)

at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1008)

at org.eclipse.swt.widgets.Widget.release(Widget.java:804)

at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:755)

at org.eclipse.swt.widgets.Widget.release(Widget.java:807)

at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:755)

at org.eclipse.swt.widgets.Widget.release(Widget.java:807)

at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:755)

at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:174)

at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:771)

at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1211)

at org.eclipse.swt.widgets.Widget.release(Widget.java:807)

at org.eclipse.swt.widgets.Widget.dispose(Widget.java:441)

at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:446)

at org.eclipse.swt.widgets.Shell.dispose(Shell.java:674)

at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:308)

at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1643)

at org.eclipse.swt.widgets.Control.windowProc(Control.java:3789)

at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337)

at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1576)

at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1937)

at org.eclipse.swt.widgets.Display.windowProc(Display.java:4528)

at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)

at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2366)

at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:477)

at org.eclipse.swt.widgets.Control.windowProc(Control.java:3877)

at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337)

at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1576)

at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1937)

at org.eclipse.swt.widgets.Display.windowProc(Display.java:4528)

at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)

at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2366)

at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:477)

at org.eclipse.swt.widgets.Control.windowProc(Control.java:3877)

at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337)

at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1576)

at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1937)

at org.eclipse.swt.widgets.Display.windowProc(Display.java:4528)

at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)

at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2371)

at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3420)

at com.siemens.med.cad.hqm.view.mainUI.HQMMainForm.buildMainShell(HQMMainForm.java:246)

at com.siemens.med.cad.hqm.event.UserLoginEventHandler.loginDisplay(UserLoginEventHandler.java:240)

at com.siemens.med.cad.hqm.event.UserLoginEventHandler.widgetSelected(UserLoginEventHandler.java:97)

at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)

at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)

at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)

at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)

at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)

this is my code:

private void displayReport(String reportTitle) {

// Shell to display the report

Display display = Display.getDefault() ;

Shell shell = new Shell(SWT.RESIZE //Display of the active Shell being used

| SWT.CLOSE | SWT.MIN | SWT.MAX | SWT.APPLICATION_MODAL);

shell.setText(reportTitle);

shell.setLayout(new FillLayout());

shell.setMaximized(false);

shell.setSize(800, 600);

// Composite

Composite comp = new Composite(shell, SWT.NONE);

comp.setLayout(new FillLayout());

// Browser

final Browser browser = new Browser(comp, SWT.FLAT);

// Setting the file to browser

try {

File file = new File(exportFile);

URL url = file.toURL();

browser.setUrl("file:" + url.getPath());

} catch (MalformedURLException malURLEx) {

// malURLEx.printStackTrace();

throw new ProgrammingExceptionAdapter(malURLEx);

}

// Add a dispose listener to the shell

// and delete the temp file at dispose.

shell.addDisposeListener(new DisposeListener() {

public void widgetDisposed(DisposeEvent arg0) {

File file = new File(exportFile);

if (file != null && file.exists()) {

file.delete();

}

browser.dispose();

}

});

// Opening the file

shell.open();

shell.setFocus();

}