You are viewing a plain text version of this content. The canonical link for it is here.
Posted to doxia-commits@maven.apache.org by vs...@apache.org on 2009/06/08 14:58:35 UTC
svn commit: r782610 - in
/maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main:
java/org/apache/maven/doxia/docrenderer/pdf/itext/ITextPdfRenderer.java
resources/org/apache/maven/doxia/docrenderer/pdf/itext/TOC.xslt
Author: vsiveton
Date: Mon Jun 8 12:58:35 2009
New Revision: 782610
URL: http://svn.apache.org/viewvc?rev=782610&view=rev
Log:
o improved the cover of iText to be similar to the fo renderer
Modified:
maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/java/org/apache/maven/doxia/docrenderer/pdf/itext/ITextPdfRenderer.java
maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/docrenderer/pdf/itext/TOC.xslt
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=782610&r1=782609&r2=782610&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 Mon Jun 8 12:58:35 2009
@@ -24,8 +24,10 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Writer;
+import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
+import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedList;
@@ -46,6 +48,8 @@
import org.apache.maven.doxia.docrenderer.DocumentRendererException;
import org.apache.maven.doxia.docrenderer.pdf.AbstractPdfRenderer;
+import org.apache.maven.doxia.document.DocumentCover;
+import org.apache.maven.doxia.document.DocumentMeta;
import org.apache.maven.doxia.document.DocumentModel;
import org.apache.maven.doxia.document.DocumentTOCItem;
import org.apache.maven.doxia.module.itext.ITextSink;
@@ -329,6 +333,8 @@
transformer.setOutputProperty( OutputKeys.ENCODING, "UTF-8" );
+ // No doctype since itext doctype is not up to date!
+
return transformer;
}
catch ( TransformerConfigurationException e )
@@ -348,55 +354,112 @@
*
* @param transformer the Transformer to set the parameters.
* @param documentModel the DocumentModel to take the parameters from, could be null.
+ * @param iTextFile the iTextFile not null for the relative paths.
*/
- private void addTransformerParameters( Transformer transformer, DocumentModel documentModel )
+ private void addTransformerParameters( Transformer transformer, DocumentModel documentModel, File iTextFile )
{
if ( documentModel == null )
{
return;
}
- if ( documentModel.getMeta().getTitle() != null )
- {
- transformer.setParameter( "title", documentModel.getMeta().getTitle() );
- }
-
- if ( documentModel.getMeta().getAuthor() != null )
- {
- transformer.setParameter( "author", documentModel.getMeta().getAuthor() );
+ // Meta parameters
+ boolean hasNullMeta = false;
+ if ( documentModel.getMeta() == null )
+ {
+ hasNullMeta = true;
+ documentModel.setMeta( new DocumentMeta() );
+ }
+ addTransformerParameter( transformer, "meta.author", documentModel.getMeta().getAllAuthorNames(),
+ System.getProperty( "user.name", "null" ) );
+ addTransformerParameter( transformer, "meta.creator", documentModel.getMeta().getCreator(),
+ System.getProperty( "user.name", "null" ) );
+ // see com.lowagie.text.Document#addCreationDate()
+ SimpleDateFormat sdf = new SimpleDateFormat( "EEE MMM dd HH:mm:ss zzz yyyy" );
+ addTransformerParameter( transformer, "meta.creationdate", documentModel.getMeta().getCreationDate_(),
+ sdf.format( new Date() ) );
+ addTransformerParameter( transformer, "meta.keywords", documentModel.getMeta().getAllKeyWords() );
+ addTransformerParameter( transformer, "meta.pagesize", documentModel.getMeta().getSubject(),
+ ITextUtil.getPageSize( ITextUtil.getDefaultPageSize() ) );
+ addTransformerParameter( transformer, "meta.producer", documentModel.getMeta().getGenerator(),
+ "Apache Doxia iText" );
+ addTransformerParameter( transformer, "meta.subject", documentModel.getMeta().getSubject(),
+ ( documentModel.getMeta().getTitle() != null ? documentModel.getMeta().getTitle()
+ : "" ) );
+ addTransformerParameter( transformer, "meta.title", documentModel.getMeta().getTitle() );
+ if ( hasNullMeta )
+ {
+ documentModel.setMeta( null );
+ }
+
+ // cover parameter
+ boolean hasNullCover = false;
+ if ( documentModel.getCover() == null )
+ {
+ hasNullCover = true;
+ documentModel.setCover( new DocumentCover() );
+ }
+ addTransformerParameter( transformer, "cover.author", documentModel.getCover().getAllAuthorNames(),
+ System.getProperty( "user.name", "null" ) );
+ String companyLogo = getLogoURL( documentModel.getCover().getCompanyLogo(), iTextFile.getParentFile() );
+ addTransformerParameter( transformer, "cover.companyLogo", companyLogo );
+ addTransformerParameter( transformer, "cover.companyName", documentModel.getCover().getCompanyName() );
+ if ( documentModel.getCover().getCoverDate_() == null )
+ {
+ documentModel.getCover().setCoverDate( new Date() );
+ addTransformerParameter( transformer, "cover.date", documentModel.getCover().getCoverDate_() );
+ documentModel.getCover().setCoverDate( null );
}
-
- transformer.setParameter( "creationdate", new Date().toString() );
-
- if ( documentModel.getMeta().getSubject() != null )
+ else
{
- transformer.setParameter( "subject", documentModel.getMeta().getSubject() );
+ addTransformerParameter( transformer, "cover.date", documentModel.getCover().getCoverDate_() );
}
-
- if ( documentModel.getMeta().getKeywords() != null )
+ addTransformerParameter( transformer, "cover.subtitle", documentModel.getCover().getCoverSubTitle() );
+ addTransformerParameter( transformer, "cover.title", documentModel.getCover().getCoverTitle() );
+ addTransformerParameter( transformer, "cover.type", documentModel.getCover().getCoverType() );
+ addTransformerParameter( transformer, "cover.version", documentModel.getCover().getCoverVersion() );
+ String projectLogo = getLogoURL( documentModel.getCover().getProjectLogo(), iTextFile.getParentFile() );
+ addTransformerParameter( transformer, "cover.projectLogo", projectLogo );
+ addTransformerParameter( transformer, "cover.projectName", documentModel.getCover().getProjectName() );
+ if ( hasNullCover )
{
- transformer.setParameter( "keywords", documentModel.getMeta().getKeywords() );
+ documentModel.setCover( null );
}
+ }
- transformer.setParameter( "producer", "Generated with Doxia by " + System.getProperty( "user.name" ) );
-
- if ( ITextUtil.isPageSizeSupported( documentModel.getMeta().getTitle() ) )
+ /**
+ * @param transformer not null
+ * @param name not null
+ * @param value could be empty
+ * @param defaultValue could be empty
+ * @since 1.1.1
+ */
+ private void addTransformerParameter( Transformer transformer, String name, String value, String defaultValue )
+ {
+ if ( StringUtils.isEmpty( value ) )
{
- transformer.setParameter( "pagesize", documentModel.getMeta().getPageSize() );
+ addTransformerParameter( transformer, name, defaultValue );
}
else
{
- transformer.setParameter( "pagesize", "A4" );
+ addTransformerParameter( transformer, name, value );
}
+ }
- transformer.setParameter( "frontPageHeader", "" );
-
- if ( documentModel.getMeta().getTitle() != null )
+ /**
+ * @param transformer not null
+ * @param name not null
+ * @param value could be empty
+ * @since 1.1.1
+ */
+ private void addTransformerParameter( Transformer transformer, String name, String value )
+ {
+ if ( StringUtils.isEmpty( value ) )
{
- transformer.setParameter( "frontPageTitle", documentModel.getMeta().getTitle() );
+ return;
}
- transformer.setParameter( "frontPageFooter", "Generated date " + new Date().toString() );
+ transformer.setParameter( name, value );
}
/**
@@ -412,7 +475,7 @@
{
Transformer transformer = initTransformer();
- addTransformerParameters( transformer, documentModel );
+ addTransformerParameters( transformer, documentModel, iTextFile );
try
{
@@ -514,4 +577,36 @@
return iTextFiles;
}
+
+ /**
+ * @param logo
+ * @param parentFile
+ * @return the logo url or null if unable to create it.
+ * @since 1.1.1
+ */
+ private String getLogoURL( String logo, File parentFile )
+ {
+ if ( logo == null )
+ {
+ return null;
+ }
+
+ try
+ {
+ return new URL( logo ).toString();
+ }
+ catch ( MalformedURLException e )
+ {
+ try
+ {
+ return new File(parentFile, logo ).toURL().toString();
+ }
+ catch ( MalformedURLException e1 )
+ {
+ // nope
+ }
+ }
+
+ return null;
+ }
}
Modified: maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/docrenderer/pdf/itext/TOC.xslt
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/docrenderer/pdf/itext/TOC.xslt?rev=782610&r1=782609&r2=782610&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/docrenderer/pdf/itext/TOC.xslt (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-doc-renderer/src/main/resources/org/apache/maven/doxia/docrenderer/pdf/itext/TOC.xslt Mon Jun 8 12:58:35 2009
@@ -21,51 +21,86 @@
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <!-- MetaData Parameters -->
- <xsl:param name="title" />
- <xsl:param name="author" />
- <xsl:param name="creationdate" />
- <xsl:param name="subject" />
- <xsl:param name="keywords" />
- <xsl:param name="producer" />
- <xsl:param name="pagesize" />
+ <!-- MetaData Parameters -->
+ <xsl:param name="meta.author" />
+ <xsl:param name="meta.creator" />
+ <xsl:param name="meta.creationdate" />
+ <xsl:param name="meta.keywords" />
+ <xsl:param name="meta.pagesize" />
+ <xsl:param name="meta.producer" />
+ <xsl:param name="meta.subject" />
+ <xsl:param name="meta.title" />
<!-- FrontPage Parameters -->
- <xsl:param name="frontPageTitle" />
- <xsl:param name="frontPageFooter" />
+ <xsl:param name="cover.author" />
+ <xsl:param name="cover.companyLogo" />
+ <xsl:param name="cover.companyName" />
+ <xsl:param name="cover.date" />
+ <xsl:param name="cover.subtitle" />
+ <xsl:param name="cover.title" />
+ <xsl:param name="cover.type" />
+ <xsl:param name="cover.version" />
+ <xsl:param name="cover.projectLogo" />
+ <xsl:param name="cover.projectName" />
<xsl:template match="/itext">
- <itext title="{$title}" author="{$author}" creationdate="{$creationdate}"
- subject="{$subject}" keywords="{$keywords}" producer="{$producer}"
- pagesize="{$pagesize}">
+ <itext
+ author="{$meta.author}"
+ creator="{$meta.creator}"
+ creationdate="{$meta.creationdate}"
+ keywords="{$meta.keywords}"
+ pagesize="{$meta.pagesize}"
+ producer="{$meta.producer}"
+ subject="{$meta.subject}"
+ title="{$meta.title}">
<!-- Start Front page -->
<paragraph>
<chunk font="Helvetica" size="12.0" fontstyle="normal"
blue="0" green="0" red="0">
- <table columns="1" left="false" right="false"
+ <table columns="2" left="false" right="false"
top="false" bottom="false" align="Center" width="100%">
<row>
<cell left="false" right="false" top="false"
bottom="false" horizontalalign="Left" verticalalign="middle">
- <image
- url="http://maven.apache.org/images/apache-maven-project.png"
- plainwidth="306.0" plainheight="27.867857" />
+ <xsl:if test="$cover.companyLogo != ''">
+ <image url="{$cover.companyLogo}" />
+ </xsl:if>
+ </cell>
+ <cell left="false" right="false" top="false"
+ bottom="false" horizontalalign="Left" verticalalign="middle">
+ <xsl:if test="$cover.projectLogo != ''">
+ <image url="{$cover.projectLogo}" />
+ </xsl:if>
</cell>
</row>
<row>
<cell left="false" right="false" top="false"
bottom="false" horizontalalign="Center" verticalalign="middle"
- leading="330">
+ leading="300" colspan="2">
<chunk font="Helvetica" size="24.0"
- fontstyle="bold" blue="0" green="0" red="0"><xsl:value-of select="$frontPageTitle"/></chunk>
+ fontstyle="bold" blue="0" green="0" red="0"><xsl:value-of select="$cover.title"/></chunk>
+ </cell>
+ </row>
+ <row>
+ <cell left="false" right="false" top="false"
+ bottom="false" horizontalalign="Center" verticalalign="middle"
+ colspan="2">
+ <chunk font="Helvetica" size="24.0"
+ fontstyle="bold" blue="0" green="0" red="0"><xsl:value-of select="$cover.subtitle"/></chunk>
</cell>
</row>
<row>
<cell left="false" right="false" top="false"
bottom="false" horizontalalign="Left" verticalalign="middle"
- leading="330">
+ leading="300">
+ <chunk font="Helvetica" size="16.0"
+ fontstyle="bold" blue="0" green="0" red="0"><xsl:value-of select="$cover.companyName"/></chunk>
+ </cell>
+ <cell left="false" right="false" top="false"
+ bottom="false" horizontalalign="right" verticalalign="middle"
+ leading="300">
<chunk font="Helvetica" size="16.0"
- fontstyle="bold" blue="0" green="0" red="0"><xsl:value-of select="$frontPageFooter"/></chunk>
+ fontstyle="bold" blue="0" green="0" red="0"><xsl:value-of select="$cover.date"/></chunk>
</cell>
</row>
</table>
@@ -76,6 +111,7 @@
<!-- Start TOC -->
<newpage />
<paragraph align="Center">
+ <!-- TODO i18N -->
<chunk font="Helvetica" size="24" fontstyle="bold" blue="0"
green="0" red="0">Table Of Contents</chunk>
</paragraph>