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
{
	/**
	 * The Pdf Writer
	 */
	private PdfWriter writer = null;
	/**
	 * Template for totalpage
	 */
	private static PdfTemplate totalPageTemplate = null;
	/**
	 * ContentByte layer for pdf, cb covers cbUnder.
	 */
	private PdfContentByte contentByte, cbUnder = null;
	/**
	 * The height and width of the current pdf page.
	 */
	private float pageHeight = 0f;
	private Logger logger = Logger.getLogger( PDFPage.class.getName( ) );
	public PDFPage( int pageWidth, int pageHeight, Document document,
			PdfWriter writer )
	{
		float ratio = PDFConstants.LAYOUT_TO_PDF_RATIO;
		this.pageHeight = pageHeight / ratio;
		this.writer = writer;
		
		try
		{
			Rectangle pageSize = new Rectangle( pageWidth / ratio, pageHeight