Author: vsiveton Date: Wed Jun 3 23:04:33 2009 New Revision: 781614 URL: http://svn.apache.org/viewvc?rev=781614&view=rev Log: DOXIA-331: Unable to renderer images on iText module
o added a temp system property for the rendering Modified: maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/pdf/itext/ITextPdfRenderer.java maven/doxia/doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/ITextSink.java Modified: maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/pdf/itext/ITextPdfRenderer.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/pdf/itext/ITextPdfRenderer.java?rev=781614&r1=781613&r2=781614&view=diff ============================================================================== --- maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/pdf/itext/ITextPdfRenderer.java (original) +++ maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/pdf/itext/ITextPdfRenderer.java Wed Jun 3 23:04:33 2009 @@ -190,14 +190,23 @@ private void parse( String fullDocPath, SiteModule module, File iTextFile ) throws DocumentRendererException, IOException { - Writer writer = WriterFactory.newXmlWriter( iTextFile ); - ITextSink sink = (ITextSink) new ITextSinkFactory().createSink( writer ); + System.setProperty( "itext.basedir", iTextFile.getParentFile().getAbsolutePath() ); - sink.setClassLoader( new URLClassLoader( new URL[] { iTextFile.getParentFile().toURI().toURL() } ) ); + try + { + Writer writer = WriterFactory.newXmlWriter( iTextFile ); + ITextSink sink = (ITextSink) new ITextSinkFactory().createSink( writer ); + + sink.setClassLoader( new URLClassLoader( new URL[] { iTextFile.getParentFile().toURI().toURL() } ) ); - parse( fullDocPath, module.getParserId(), sink ); + parse( fullDocPath, module.getParserId(), sink ); - sink.close(); + sink.close(); + } + finally + { + System.getProperties().remove( "itext.basedir" ); + } } /** Modified: maven/doxia/doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/ITextSink.java URL: http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/ITextSink.java?rev=781614&r1=781613&r2=781614&view=diff ============================================================================== --- maven/doxia/doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/ITextSink.java (original) +++ maven/doxia/doxia/trunk/doxia-modules/doxia-module-itext/src/main/java/org/apache/maven/doxia/module/itext/ITextSink.java Wed Jun 3 23:04:33 2009 @@ -24,6 +24,7 @@ import com.lowagie.text.Image; import java.awt.Color; +import java.io.File; import java.io.IOException; import java.io.LineNumberReader; import java.io.StringReader; @@ -1128,29 +1129,48 @@ actionContext.setAction( SinkActionContext.FIGURE_CAPTION ); } - /** {...@inheritdoc} */ + /** + * If the <code>name</code> is a relative link, the internal link will used a System property <code>itext.basedir</code>, + * or the class loader. + * {...@inheritdoc} */ public void figureGraphics( String name ) { String urlName = null; + File nameFile = null; if ( ( name.toLowerCase( Locale.ENGLISH ).startsWith( "http://" ) ) - || ( name.toLowerCase( Locale.ENGLISH ).startsWith( "https://" ) ) ) + || ( name.toLowerCase( Locale.ENGLISH ).startsWith( "https://" ) ) ) { urlName = name; } else { - if ( getClassLoader() != null ) + if ( System.getProperty( "itext.basedir" ) != null ) { - if ( getClassLoader().getResource( name ) != null ) + try + { + nameFile = new File( System.getProperty( "itext.basedir" ), name ); + urlName = nameFile.toURL().toString(); + } + catch ( MalformedURLException e ) { - urlName = getClassLoader().getResource( name ).toString(); + getLog().error( "MalformedURLException: " + e.getMessage(), e ); } } else { - if ( ITextSink.class.getClassLoader().getResource( name ) != null ) + if ( getClassLoader() != null ) { - urlName = ITextSink.class.getClassLoader().getResource( name ).toString(); + if ( getClassLoader().getResource( name ) != null ) + { + urlName = getClassLoader().getResource( name ).toString(); + } + } + else + { + if ( ITextSink.class.getClassLoader().getResource( name ) != null ) + { + urlName = ITextSink.class.getClassLoader().getResource( name ).toString(); + } } } } @@ -1165,6 +1185,16 @@ return; } + if ( nameFile != null && !nameFile.exists() ) + { + String msg = "No image '" + nameFile + "' found in your system, check the path."; + logMessage( "imageNotFound", msg ); + + return; + } + + figure(); + float width = 0; float height = 0; try @@ -1176,15 +1206,15 @@ } catch ( BadElementException e ) { - // nop + getLog().error( "BadElementException: " + e.getMessage(), e ); } catch ( MalformedURLException e ) { - // nop + getLog().error( "MalformedURLException: " + e.getMessage(), e ); } catch ( IOException e ) { - // nop + getLog().error( "IOException: " + e.getMessage(), e ); } writeAddAttribute( ElementTags.URL, urlName ); @@ -1193,6 +1223,8 @@ writeAddAttribute( ElementTags.PLAINHEIGHT, String.valueOf( height ) ); actionContext.setAction( SinkActionContext.FIGURE_GRAPHICS ); + + figure_(); } // ----------------------------------------------------------------------