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
* 
	 * @param hyperlink
	 *            the hyperlink.
	 * @param bookmark
	 *            the bookmark.
	 * @param target
	 *            if target equals "_blank", the target will be opened in a new
	 *            window, else the target will be opened in the current window.
	 * @return the created PdfAction.
	 */
	private PdfAction createPdfAction( String hyperlink, String bookmark,
			String target, int type )
	{
		if ( "_blank".equalsIgnoreCase( target ) ) 
		
		{
			return new PdfAction( hyperlink );
		}
		else
		
		{
			if ( type == IHyperlinkAction.ACTION_BOOKMARK )
			{
				return PdfAction.gotoLocalPage( bookmark, false );
			}
			else
			{
				return PdfAction.gotoRemotePage( hyperlink, bookmark, false,
						false );
			}