You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cocoon.apache.org by Bertrand Delacretaz <bd...@codeconsult.ch> on 2001/09/26 17:42:38 UTC
[patch] RTFSerializer for Cocoon 2
Enclosed is a patch (contributed to jfor by Gianugo Rabellino), that allows
jfor to be integrated with Cocoon 2 for RTF serialization of XSL-FO documents.
I successfully tested it today with the 20010926101525 CVS snapshot, by
adding the following to the sitemap after compiling and installing the
patched version:
<map:match pattern="hello.rtf">
<map:generate src="docs/samples/hello-page.xml"/>
<map:transform src="stylesheets/page/simple-page2fo.xsl"/>
<map:serialize type="fo2rtf"/>
</map:match>
The RTFSerializer is only compiled if the jfor converter class is available
at compile time. See www.jfor.org for how to obtain jfor.
Thanks very much to Gianugo for his contribution - we hope to get this
integrated in the Cocoon 2 code base to make jfor and Cocoon more useful!
-- Bertrand Delacrétaz,
-- jfor.org project manager
--------- CUT HERE -----------------------------------------------------
Two inline attachments follow:
1) diff for build.xml
2) RTFSerializer source code
--------- CUT HERE -----------------------------------------------------
Index: build.xml
===================================================================
RCS file: /home/cvspublic/xml-cocoon2/build.xml,v
retrieving revision 1.64
diff -u -r1.64 build.xml
--- build.xml 2001/09/19 19:37:55 1.64
+++ build.xml 2001/09/20 09:06:58
@@ -127,7 +127,10 @@
- fo2pcl serializer : Requires the FOP package (included in the dist)
<map:serializer name="fo2pcl"
src="org.apache.cocoon.serialization.FOPSerializer"
mime-type="application/vnd.hp-PCL"/>
+- fo2rtf serializer : Requires the JFOR package (notincluded in the dist)
+ <map:serializer name="fo2rtf"
src="org.apache.cocoon.serialization.RTFSerializer"
mime-type="application/msword"/>
+
Happy hacking from the Apache Cocoon 2 Dev
Team :)
============================================================================
-->
@@ -300,6 +303,9 @@
<available property="xmldb.present"
classname="org.xmldb.api.DatabaseManager">
<classpath refid="classpath"/>
</available>
+ <available property="jfor.present"
classname="org.jfor.jfor.converter.Converter">
+ <classpath refid="classpath"/>
+ </available>
</target>
<!-- ===================================================================
-->
@@ -323,6 +329,7 @@
<exclude name="**/LDAPTransformer*.java" unless="naming.present"/>
<exclude name="**/JSPEngineImplWLS.java" unless="weblogic.present"/>
<exclude name="**/XMLDB*.java" unless="xmldb.present"/>
+ <exclude name="**/RTFSerializer.java" unless="jfor.present"/>
<exclude name="**/browser/*.x*"/>
<exclude name="**/samples/parentcm/*.java" unless="naming.present"/>
</fileset>
@@ -694,9 +701,22 @@
</target>
<!-- ===================================================================
-->
+ <!-- Prepares the webapp sitemap if JFOR is available -->
+ <!-- ===================================================================
-->
+ <target name="prepare-webapp-jfor" depends="copy-webapp"
+ if="jfor.present">
+ <java classname="st">
+ <arg line="-i ${build.war}/sitemap.xmap -o ${build.war}/sitemap.xmap
-a serializers fo2rtf org.apache.cocoon.serialization.RTFSerializer"/>
+ <classpath>
+ <pathelement location="${bin.dir}"/>
+ </classpath>
+ </java>
+ </target>
+
+ <!-- ===================================================================
-->
<!-- Prepares the webapp directories
-->
<!-- ===================================================================
-->
- <target name="prepare-webapp" depends="copy-webapp, prepare-webapp-php,
prepare-webapp-xt, prepare-webapp-fop, prepare-webapp-tidy,
prepare-webapp-naming, prepare-webapp-xmldb">
+ <target name="prepare-webapp" depends="copy-webapp, prepare-webapp-php,
prepare-webapp-xt, prepare-webapp-fop, prepare-webapp-tidy,
prepare-webapp-naming, prepare-webapp-xmldb, prepare-webapp-jfor">
<!-- Simply do nothing, just invoke all dependencies -->
</target>
--------- CUT HERE -----------------------------------------------------
Second file: RTFSerializer.java
--------- CUT HERE -----------------------------------------------------
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************
/
package org.apache.cocoon.serialization;
import java.net.URL;
import java.net.MalformedURLException;
import org.apache.avalon.excalibur.pool.Poolable;
import org.apache.avalon.framework.component.ComponentException;
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.Composable;
import org.apache.cocoon.components.url.URLFactory;
import org.apache.log.Priority;
import org.apache.log.util.OutputStreamLogger;
import org.jfor.jfor.converter.Converter;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.io.BufferedWriter;
import org.xml.sax.SAXException;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.AttributesImpl;
/**
* This class uses the <a href="http://www.jfor.org">jfor</a> library
* to serialize XSL:FO documents to RTF streams.
*
* @author <a href="mailto:gianugo@rabellino.it">Gianugo Rabellino</a>
*/
public class RTFSerializer extends AbstractTextSerializer
implements Poolable, Composable {
private Writer rtfWriter = null;
private Converter handler = null;
private OutputStreamLogger cocoonLogger = null;
private ComponentManager manager = null;
public RTFSerializer() {
}
/**
* Set the current <code>ComponentManager</code> instance used by this
* <code>Composable</code>.
*/
public void compose(ComponentManager manager) {
this.manager = manager;
}
/**
* Set the OutputStream where the serializer will write to.
*
* @param out the OutputStream
*/
public void setOutputStream(OutputStream out) {
try {
cocoonLogger =
new OutputStreamLogger(this.getLogger(), Priority.DEBUG);
rtfWriter =
new BufferedWriter(new OutputStreamWriter(out));
handler = new Converter(rtfWriter,
Converter.createConverterOption(cocoonLogger));
super.setContentHandler(handler);
} catch (Exception e) {
getLogger().error("RTFSerializer.setOutputStream()", e);
throw new RuntimeException(e.toString());
}
}
/**
* Recycle the serializer. GC instance variables
*/
public void recycle() {
super.recycle();
rtfWriter = null;
handler = null;
cocoonLogger = null;
}
}
--------- CUT HERE -----------------------------------------------------
end of patches.
---------------------------------------------------------------------
To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
For additional commands, email: cocoon-dev-help@xml.apache.org
Re: [patch] RTFSerializer for Cocoon 2
Posted by Bertrand Delacretaz <bd...@codeconsult.ch>.
> What license is jfor under?
> AFAIK it's MPL 1.1. Good enough for me :)
Confirmed, jfor is licensed under MPL 1.1.
I just updated the jfor.org homepage to make it clearer.
-- Bertrand Delacrétaz,
-- jfor.org project manager
---------------------------------------------------------------------
To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
For additional commands, email: cocoon-dev-help@xml.apache.org
Re: [patch] RTFSerializer for Cocoon 2
Posted by Gianugo Rabellino <g....@bibop.it>.
> What license is jfor under?
AFAIK it's MPL 1.1. Good enough for me :)
Ciao,
--
Gianugo
---------------------------------------------------------------------
To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
For additional commands, email: cocoon-dev-help@xml.apache.org
Re: [patch] RTFSerializer for Cocoon 2
Posted by giacomo <gi...@apache.org>.
On Wed, 26 Sep 2001, Bertrand Delacretaz wrote:
What license is jfor under?
Giacomo
> Enclosed is a patch (contributed to jfor by Gianugo Rabellino), that allows
> jfor to be integrated with Cocoon 2 for RTF serialization of XSL-FO documents.
>
> I successfully tested it today with the 20010926101525 CVS snapshot, by
> adding the following to the sitemap after compiling and installing the
> patched version:
>
> <map:match pattern="hello.rtf">
> <map:generate src="docs/samples/hello-page.xml"/>
> <map:transform src="stylesheets/page/simple-page2fo.xsl"/>
> <map:serialize type="fo2rtf"/>
> </map:match>
>
> The RTFSerializer is only compiled if the jfor converter class is available
> at compile time. See www.jfor.org for how to obtain jfor.
>
> Thanks very much to Gianugo for his contribution - we hope to get this
> integrated in the Cocoon 2 code base to make jfor and Cocoon more useful!
>
> -- Bertrand Delacrétaz,
> -- jfor.org project manager
>
> --------- CUT HERE -----------------------------------------------------
> Two inline attachments follow:
> 1) diff for build.xml
> 2) RTFSerializer source code
> --------- CUT HERE -----------------------------------------------------
> Index: build.xml
> ===================================================================
> RCS file: /home/cvspublic/xml-cocoon2/build.xml,v
> retrieving revision 1.64
> diff -u -r1.64 build.xml
> --- build.xml 2001/09/19 19:37:55 1.64
> +++ build.xml 2001/09/20 09:06:58
> @@ -127,7 +127,10 @@
> - fo2pcl serializer : Requires the FOP package (included in the dist)
> <map:serializer name="fo2pcl"
> src="org.apache.cocoon.serialization.FOPSerializer"
> mime-type="application/vnd.hp-PCL"/>
>
> +- fo2rtf serializer : Requires the JFOR package (notincluded in the dist)
> + <map:serializer name="fo2rtf"
> src="org.apache.cocoon.serialization.RTFSerializer"
> mime-type="application/msword"/>
>
> +
> Happy hacking from the Apache Cocoon 2 Dev
> Team :)
>
> ============================================================================
> -->
> @@ -300,6 +303,9 @@
> <available property="xmldb.present"
> classname="org.xmldb.api.DatabaseManager">
> <classpath refid="classpath"/>
> </available>
> + <available property="jfor.present"
> classname="org.jfor.jfor.converter.Converter">
> + <classpath refid="classpath"/>
> + </available>
> </target>
>
> <!-- ===================================================================
> -->
> @@ -323,6 +329,7 @@
> <exclude name="**/LDAPTransformer*.java" unless="naming.present"/>
> <exclude name="**/JSPEngineImplWLS.java" unless="weblogic.present"/>
> <exclude name="**/XMLDB*.java" unless="xmldb.present"/>
> + <exclude name="**/RTFSerializer.java" unless="jfor.present"/>
> <exclude name="**/browser/*.x*"/>
> <exclude name="**/samples/parentcm/*.java" unless="naming.present"/>
> </fileset>
> @@ -694,9 +701,22 @@
> </target>
>
> <!-- ===================================================================
> -->
> + <!-- Prepares the webapp sitemap if JFOR is available -->
> + <!-- ===================================================================
> -->
> + <target name="prepare-webapp-jfor" depends="copy-webapp"
> + if="jfor.present">
> + <java classname="st">
> + <arg line="-i ${build.war}/sitemap.xmap -o ${build.war}/sitemap.xmap
> -a serializers fo2rtf org.apache.cocoon.serialization.RTFSerializer"/>
> + <classpath>
> + <pathelement location="${bin.dir}"/>
> + </classpath>
> + </java>
> + </target>
> +
> + <!-- ===================================================================
> -->
> <!-- Prepares the webapp directories
> -->
> <!-- ===================================================================
> -->
> - <target name="prepare-webapp" depends="copy-webapp, prepare-webapp-php,
> prepare-webapp-xt, prepare-webapp-fop, prepare-webapp-tidy,
> prepare-webapp-naming, prepare-webapp-xmldb">
> + <target name="prepare-webapp" depends="copy-webapp, prepare-webapp-php,
> prepare-webapp-xt, prepare-webapp-fop, prepare-webapp-tidy,
> prepare-webapp-naming, prepare-webapp-xmldb, prepare-webapp-jfor">
> <!-- Simply do nothing, just invoke all dependencies -->
> </target>
>
> --------- CUT HERE -----------------------------------------------------
> Second file: RTFSerializer.java
> --------- CUT HERE -----------------------------------------------------
>
> /*****************************************************************************
> * Copyright (C) The Apache Software Foundation. All rights reserved. *
> * ------------------------------------------------------------------------- *
> * This software is published under the terms of the Apache Software License *
> * version 1.1, a copy of which has been included with this distribution in *
> * the LICENSE file. *
> *****************************************************************************
> /
>
> package org.apache.cocoon.serialization;
>
> import java.net.URL;
> import java.net.MalformedURLException;
>
> import org.apache.avalon.excalibur.pool.Poolable;
> import org.apache.avalon.framework.component.ComponentException;
> import org.apache.avalon.framework.component.ComponentManager;
> import org.apache.avalon.framework.component.Composable;
>
> import org.apache.cocoon.components.url.URLFactory;
>
> import org.apache.log.Priority;
> import org.apache.log.util.OutputStreamLogger;
>
> import org.jfor.jfor.converter.Converter;
>
> import javax.xml.transform.OutputKeys;
> import javax.xml.transform.sax.TransformerHandler;
> import javax.xml.transform.stream.StreamResult;
> import java.io.OutputStream;
> import java.io.OutputStreamWriter;
> import java.io.Writer;
> import java.io.BufferedWriter;
>
> import org.xml.sax.SAXException;
> import org.xml.sax.Attributes;
> import org.xml.sax.helpers.AttributesImpl;
>
> /**
> * This class uses the <a href="http://www.jfor.org">jfor</a> library
> * to serialize XSL:FO documents to RTF streams.
> *
> * @author <a href="mailto:gianugo@rabellino.it">Gianugo Rabellino</a>
> */
>
> public class RTFSerializer extends AbstractTextSerializer
> implements Poolable, Composable {
>
> private Writer rtfWriter = null;
> private Converter handler = null;
> private OutputStreamLogger cocoonLogger = null;
> private ComponentManager manager = null;
>
>
> public RTFSerializer() {
> }
>
> /**
> * Set the current <code>ComponentManager</code> instance used by this
> * <code>Composable</code>.
> */
> public void compose(ComponentManager manager) {
> this.manager = manager;
> }
>
> /**
> * Set the OutputStream where the serializer will write to.
> *
> * @param out the OutputStream
> */
>
>
> public void setOutputStream(OutputStream out) {
> try {
> cocoonLogger =
> new OutputStreamLogger(this.getLogger(), Priority.DEBUG);
>
> rtfWriter =
> new BufferedWriter(new OutputStreamWriter(out));
> handler = new Converter(rtfWriter,
> Converter.createConverterOption(cocoonLogger));
> super.setContentHandler(handler);
>
> } catch (Exception e) {
> getLogger().error("RTFSerializer.setOutputStream()", e);
> throw new RuntimeException(e.toString());
> }
> }
>
> /**
> * Recycle the serializer. GC instance variables
> */
> public void recycle() {
> super.recycle();
> rtfWriter = null;
> handler = null;
> cocoonLogger = null;
> }
> }
> --------- CUT HERE -----------------------------------------------------
>
> end of patches.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
> For additional commands, email: cocoon-dev-help@xml.apache.org
>
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
For additional commands, email: cocoon-dev-help@xml.apache.org