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
template.addImage( img, img.scaledWidth( ), 0, 0, img
								.scaledHeight( ), 0, -img.scaledHeight( )
								+ height );
					}
				}
				while ( remainX > 0 )
				{
					if ( remainX < img.scaledWidth( ) )
					{
						if ( height - absPosY > img.scaledHeight( ) )
						{
							PdfTemplate templateX = cbUnder.createTemplate(
									remainX, img.scaledHeight( ) );
							templateX.addImage( img, img.scaledWidth( ), 0, 0,
									img.scaledHeight( ), 0, 0 );
							cbUnder.addTemplate( templateX,
									x + width - remainX, y - absPosY
											- img.scaledHeight( ) );
						}
						else
						{
							PdfTemplate templateX = cbUnder.createTemplate(
									remainX, height );
							templateX.addImage( img, img.scaledWidth( ), 0, 0,
									img.scaledHeight( ), 0, -img.scaledHeight( )
											+ height - absPosY );
							cbUnder.addTemplate( templateX,
									x + width - remainX, y - absPosY - height );
						}
						remainX = 0;