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
{
		cb.setTextRenderingMode( PdfContentByte.TEXT_RENDER_MODE_FILL_STROKE );
		cb.setLineWidth( 0.9f );
		cb.setTextMatrix( x, y );
	}
	private void simulateItalic( PdfContentByte cb, float x, float y )
	{
		float alpha = (float) Math.tan( 0f * Math.PI / 180 );
		float beta = (float) Math.tan( 15f * Math.PI / 180 );
		cb.setTextMatrix( 1, alpha, beta, 1, x, y );
	}
	private final class TplValueTriple
	{
		private final float tplOrigin;
		private final float tplSize;
		private final float translation;
		public TplValueTriple( final float val1, final float val2,
				final float val3 )
		{
			tplOrigin = val1;
			tplSize = val2;
			translation = val3;
		}
		float getTplOrigin( )
		{
			return tplOrigin;
		}
		float getTplSize( )
		{
			return tplSize;