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
}
		return new TplValueTriple( tplOrigin, tplSize, translation );
	}
	private void showHelpText( float x, float y, float width, float height,
			String helpText )
	{
		Rectangle rectangle = new Rectangle( x, y, x + width, y + height );
		PdfAnnotation annotation = PdfAnnotation.createSquareCircle( writer,
				rectangle, helpText, true );
		PdfBorderDictionary borderStyle = new PdfBorderDictionary( 0,
				PdfBorderDictionary.STYLE_SOLID, null );
		annotation.setBorderStyle( borderStyle );
		annotation.setFlags( 288 );
		writer.addAnnotation( annotation );
	}
	/**
	 * 
	 * @param absPos
	 *            the horizontal position relative to its containing box
	 * @param containerBaseAbsPos
	 *            the absolute position of the container's left side
	 * @param containerSize
	 *            container width
	 * @param ImageSize
	 *            the width of template which image lies in
	 * @return a triple(the horizontal position of template's left-bottom
	 *         origin, template width, and image's horizontal translation
	 *         relative to the template )
	 */
	private TplValueTriple computeTplHorizontalValPair( float absPos,