Bug 137817 NPE while generating PDF report
Got this excecption when generating a big PDF report. The PDF report fails and a browser error page is displayed: WARNING: D:\workspaces\runtime-workspace\.metadata\.plugins\com.ibm.xtools.analysis.reporting\reports\codereview_severity_summary\codereview_severity_summary.pdf (The system cannot find the path specified) java.io.FileNotFoundException: D:\workspaces\runtime-workspace\.metadata\.plugins\com.ibm.xtools.analysis.reporting\reports\codereview_severity_summary\codereview_severity_summary.pdf (The system cannot find the path specified) at java.io.FileOutputStream.open(Native Method) at java.io.FileOutputStream.<init>(FileOutputStream.java:201) at java.io.FileOutputStream.<init>(FileOutputStream.java:153) at org.eclipse.birt.report.engine.emitter.pdf.PDFEmitter.initialize(PDFEmitter.java:186) at org.eclipse.birt.report.engine.layout.impl.ReportLayoutEngine.initialize(ReportLayoutEngine.java:381) at org.eclipse.birt.report.engine.presentation.WrappedEmitter.initialize(WrappedEmitter.java:44) at org.eclipse.birt.report.engine.presentation.LocalizedEmitter.initialize(LocalizedEmitter.java:129) at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.createContentEmitter(RunAndRenderTask.java:145) at org.eclipse.birt.report.engine.api.impl.RunAndRenderTask.run(RunAndRenderTask.java:174) at com.ibm.xtools.analysis.reporting.internal.editor.ReportEditor$1.runInWorkspace(ReportEditor.java:167) at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)
engine/org.eclipse.birt.report.engine.emitter.pdf/src/org/eclipse/birt/report/engine/emitter/pdf/PDFEmitter.java
private float layoutAreaY2PDF (int layoutY, int areaHeight)
	{
		return pageHeight - pdfMeasure(layoutY) - pdfMeasure(areaHeight);
	}
	
	/**
	 * convert the top Y coordinate of an Area from layout to the start Y coordinate in pdf. 
	 * to the bottom Y coordinate in PDF
	 * @param layoutY 				the Y coordinate specified from layout
	 * @param areaHeight			the height of the area whose coordinate need to be converted.
	 * 								To text area, the height is from the top of the text to
	 * 								the text's baseline.
	 * @param containerHeight		the height of the area's container 
	 * @return				the PDF Y coordinate
	 */
	private float layoutAreaY2PDFEx (int layoutY, int areaHeight, float containerHeight)
	{
		return containerHeight - pdfMeasure(layoutY) - pdfMeasure(areaHeight);
	}
    
	/**
	 * Set current area as a bookmark. 
	 * if current area does NOT contain any bookmark info,
	 * this method does nothing.
	 * 
	 * @param area			the area which may need to be marked. 
	 * @param curPos 		the position of the area's container relative to the page.
	 */
	private void makeBookmark(IArea area, ContainerPosition curPos) 
	{