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
else
		{
			currentContentByte.showText( text );
		}
		currentContentByte.endText( );
		currentContentByte.restoreState( );
	}
	private void drawLine( float textX, float textY, float width,
			float lineWidth, float verticalOffset, Color color,
			PdfContentByte contentByte )
	{
		textY = textY + verticalOffset;
		drawLine( textX, textY, textX + width, textY, lineWidth, color,
				"solid", contentByte ); 
	}
	private float transformY( float y )
	{
		return pageHeight - y;
	}
	private float transformY( float y, float height )
	{
		return pageHeight - y - height;
	}
	private float transformY( float y, float height, float containerHeight )
	{
		return containerHeight - y - height;
	}
	/**
	 * Draws a line from the start position to the end position with the given
	 * linewidth, color, and style at the given pdf layer.