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
		{
			drawRawLine( startX, startY, endX, endY, width, color, contentByte );
		}
		contentByte.restoreState( );
	}
	public void drawText( String text, int textX, int textY, int width,
			int height, TextStyle fontStyle )
	{
		drawText( text, convertToPoint( textX ), convertToPoint( textY ),
				convertToPoint( width ), convertToPoint( height ), fontStyle
						.getFontInfo( ), convertToPoint( fontStyle.getLetterSpacing( ) ),
						convertToPoint( fontStyle.getWordSpacing( ) ), fontStyle.getColor( ), fontStyle
						.isLinethrough( ), fontStyle.isOverline( ), fontStyle
						.isUnderline( ), fontStyle.getAlign( ), false );
	}
	private void drawText( String text, float textX, float textY, float width,
			float height, FontInfo fontInfo, float characterSpacing,
			float wordSpacing, Color color, boolean linethrough,
			boolean overline, boolean underline, CSSValue align,
			boolean isTotoalPage )
	{
		drawText( text, textX, textY, fontInfo, characterSpacing, wordSpacing,
				color, align, isTotoalPage );
		
		
		PdfContentByte currentContentByte = isTotoalPage
				? totalPageTemplate