Bug 183809 PDF emitter does not render URLs with specified target correctly
When the hyperlink has specified "_blank" target it's rendered with PdfAction(hyperlink) but when the target is "_parent" or "_top" or "_self" it's rendered with PdfAction.gotoRemotePage(hyperlink, bookmark, false, false) which causes something like "file does not exist" error in PDF viewer. The following change in PDFEmitter from: private PdfAction createPdfAction(String hyperlink, String bookmark, String target, int type) { if ("_blank".equalsIgnoreCase(target)) //$NON-NLS-1$ // Opens the target in a new window. { return new PdfAction(hyperlink); } else ... to: private PdfAction createPdfAction(String hyperlink, String bookmark, String target, int type) { if ("_top".equalsIgnoreCase(target) || //$NON-NLS-1$ "_parent".equalsIgnoreCase(target) || //$NON-NLS-1$ "_blank".equalsIgnoreCase(target) || //$NON-NLS-1$ "_self".equalsIgnoreCase(target)) //$NON-NLS-1$ // Opens the target in a new window. { return new PdfAction(hyperlink); } else ... works for me.
engine/org.eclipse.birt.report.engine.emitter.pdf/src/org/eclipse/birt/report/engine/emitter/pdf/PDFPage.java
logger.log( Level.WARNING, de.getMessage( ), de );
		}
		catch ( RuntimeException re )
		{
			logger.log( Level.WARNING, re.getMessage( ), re );
		}
		cbUnder.restoreState( );
	}
	public void drawImage( byte[] imageData, int imageX, int imageY,
			int height, int width, String helpText ) throws Exception
	{
		Image image = Image.getInstance( imageData );
		drawImage( image, convertToPoint( imageX ), convertToPoint( imageY ),
				convertToPoint( height ), convertToPoint( width ), helpText );
	}
	public void drawImage( String uri, int imageX, int imageY, int height,
			int width, String helpText ) throws Exception
	{
		Image image = Image.getInstance( new URL( uri ) );
		drawImage( image, convertToPoint( imageX ), convertToPoint( imageY ),
				convertToPoint( height ), convertToPoint( width ), helpText );
	}
	public void drawLine( int startX, int startY, int endX, int endY,
			int width, Color color, String lineStyle )
	{
		drawLine( convertToPoint( startX ), convertToPoint( startY ),
				convertToPoint( endX ), convertToPoint( endY ),
				convertToPoint( width ), color, lineStyle );
	}
	private void drawLine( float startX, float startY, float endX, float endY,