You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2006/01/17 21:28:43 UTC

svn commit: r369908 - in /xmlgraphics/fop/trunk/examples/embedding: java/embedding/intermediate/ExampleStamp.java xml/xslt/atstamp.xsl xml/xslt/projectteam2fo.xsl

Author: jeremias
Date: Tue Jan 17 12:28:35 2006
New Revision: 369908

URL: http://svn.apache.org/viewcvs?rev=369908&view=rev
Log:
Added an example for the intermediate format the demonstrates stamping a document using XSLT.

Added:
    xmlgraphics/fop/trunk/examples/embedding/java/embedding/intermediate/ExampleStamp.java   (with props)
    xmlgraphics/fop/trunk/examples/embedding/xml/xslt/atstamp.xsl   (with props)
Modified:
    xmlgraphics/fop/trunk/examples/embedding/xml/xslt/projectteam2fo.xsl

Added: xmlgraphics/fop/trunk/examples/embedding/java/embedding/intermediate/ExampleStamp.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/examples/embedding/java/embedding/intermediate/ExampleStamp.java?rev=369908&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/examples/embedding/java/embedding/intermediate/ExampleStamp.java (added)
+++ xmlgraphics/fop/trunk/examples/embedding/java/embedding/intermediate/ExampleStamp.java Tue Jan 17 12:28:35 2006
@@ -0,0 +1,137 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* $Id: ExampleDOM2PDF.java 332791 2005-11-12 15:58:07Z jeremias $ */
+ 
+package embedding.intermediate;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.apps.MimeConstants;
+import org.apache.fop.area.AreaTreeModel;
+import org.apache.fop.area.AreaTreeParser;
+import org.apache.fop.area.RenderPagesModel;
+import org.apache.fop.fonts.FontInfo;
+import org.xml.sax.SAXException;
+
+import embedding.ExampleObj2XML;
+import embedding.model.ProjectTeam;
+
+/**
+ * Example for the intermediate format that demonstrates the stamping of a document with some
+ * kind of watermark. The resulting document is then rendered to a PDF file.
+ */
+public class ExampleStamp {
+
+    /**
+     * Stamps an intermediate file and renders it to a PDF file.
+     * @param atfile the intermediate file (area tree XML)
+     * @param stampSheet the stylesheet that does the stamping
+     * @param pdffile the target PDF file
+     * @throws IOException In case of an I/O problem
+     * @throws TransformerException In case of a XSL transformation problem
+     * @throws SAXException In case of an XML-related problem
+     */
+    public void stampToPDF(File atfile, File stampSheet, File pdffile) 
+            throws IOException, TransformerException, SAXException {
+        // Setup output
+        OutputStream out = new java.io.FileOutputStream(pdffile);
+        out = new java.io.BufferedOutputStream(out);
+        try {
+            //Setup fonts and user agent
+            FontInfo fontInfo = new FontInfo();
+            FOUserAgent userAgent = new FOUserAgent();
+
+            //Construct the AreaTreeModel that will received the individual pages
+            AreaTreeModel treeModel = new RenderPagesModel(userAgent, 
+                    MimeConstants.MIME_PDF, fontInfo, out);
+            
+            //Iterate over all intermediate files
+            AreaTreeParser parser = new AreaTreeParser();
+            Source src = new StreamSource(atfile);
+            Source xslt = new StreamSource(stampSheet);
+            
+            //Setup Transformer for XSLT processing
+            TransformerFactory tFactory = TransformerFactory.newInstance();
+            Transformer transformer = tFactory.newTransformer(xslt);
+            
+            //Send XSLT result to AreaTreeParser
+            SAXResult res = new SAXResult(parser.getContentHandler(treeModel, userAgent));
+            
+            //Start XSLT transformation and area tree parsing
+            transformer.transform(src, res);
+            
+            //Signal the end of the processing. The renderer can finalize the target document.
+            treeModel.endDocument();
+        } finally {
+            out.close();
+        }
+    }
+    
+    /**
+     * Main method.
+     * @param args command-line arguments
+     */
+    public static void main(String[] args) {
+        try {
+            System.out.println("FOP ExampleConcat\n");
+            
+            //Setup directories
+            File baseDir = new File(".");
+            File outDir = new File(baseDir, "out");
+            outDir.mkdirs();
+            
+            //Setup output file
+            File xsltfile = new File(baseDir, "xml/xslt/projectteam2fo.xsl");
+            File atfile = new File(outDir, "team.at.xml");
+            File stampxsltfile = new File(baseDir, "xml/xslt/atstamp.xsl");
+            File pdffile = new File(outDir, "ResultStamped.pdf");
+            System.out.println("Intermediate file : " + atfile.getCanonicalPath());
+            System.out.println("Stamp XSLT: " + stampxsltfile.getCanonicalPath());
+            System.out.println("PDF Output File: " + pdffile.getCanonicalPath());
+            System.out.println();
+
+            ProjectTeam team1 = ExampleObj2XML.createSampleProjectTeam();
+            
+            //Create intermediate file
+            ExampleConcat concatapp = new ExampleConcat();
+            concatapp.convertToIntermediate(
+                    team1.getSourceForProjectTeam(), 
+                    new StreamSource(xsltfile), atfile);
+            
+            //Stamp document and produce a PDF from the intermediate format
+            ExampleStamp app = new ExampleStamp();
+            app.stampToPDF(atfile, stampxsltfile, pdffile);
+            
+            System.out.println("Success!");
+            
+        } catch (Exception e) {
+            e.printStackTrace(System.err);
+            System.exit(-1);
+        }
+    }
+
+}

Propchange: xmlgraphics/fop/trunk/examples/embedding/java/embedding/intermediate/ExampleStamp.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: xmlgraphics/fop/trunk/examples/embedding/xml/xslt/atstamp.xsl
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/examples/embedding/xml/xslt/atstamp.xsl?rev=369908&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/examples/embedding/xml/xslt/atstamp.xsl (added)
+++ xmlgraphics/fop/trunk/examples/embedding/xml/xslt/atstamp.xsl Tue Jan 17 12:28:35 2006
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Copyright 2006 The Apache Software Foundation
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<!-- $Id$ -->
+<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output method="xml" version="1.0" omit-xml-declaration="no" indent="yes"/>
+  <!-- ========================= -->
+  <!-- stamping...               -->
+  <!-- ========================= -->
+  <xsl:template match="flow">
+    <xsl:copy>
+      <xsl:apply-templates select="@*"/>
+      
+      <!-- Stamp a big "SPECIMEN" text over the whole page using an area tree fragment inserted at the right place... -->
+      <block ipd="595275" bpd="841889" is-viewport-area="true" left-position="0" top-position="0" ctm="[1.0 0.0 0.0 1.0 0.0 0.0]" positioning="fixed">
+        <block ipd="595275" bpd="841889" is-reference-area="true">
+          <block ipd="595275" bpd="841889">
+            <lineArea ipd="595275" bpd="841889">
+              <viewport ipd="595275" bpd="841889" offset="0" pos="0 0 595275 841889">
+                <foreignObject ipd="0" bpd="0" ns="http://www.w3.org/2000/svg">
+                  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
+                    <g transform="rotate(-50 50 50)">
+                      <text x="50" y="60" style="font-size:20;fill:#dfdfdf;stroke:none;font-family:sans-serif" text-anchor="middle">SPECIMEN</text>
+                    </g>
+                  </svg>
+                </foreignObject>
+              </viewport>
+            </lineArea>
+          </block>
+        </block>
+      </block>
+      
+      <xsl:apply-templates select="child::*"/>
+    </xsl:copy>
+  </xsl:template>
+  <!-- ========================= -->
+  <!-- identity transformation   -->
+  <!-- ========================= -->
+  <xsl:template match="@*|node()">
+    <xsl:copy>
+      <xsl:apply-templates select="@*|node()"/>
+    </xsl:copy>
+  </xsl:template>
+</xsl:stylesheet>

Propchange: xmlgraphics/fop/trunk/examples/embedding/xml/xslt/atstamp.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: xmlgraphics/fop/trunk/examples/embedding/xml/xslt/atstamp.xsl
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: xmlgraphics/fop/trunk/examples/embedding/xml/xslt/projectteam2fo.xsl
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/examples/embedding/xml/xslt/projectteam2fo.xsl?rev=369908&r1=369907&r2=369908&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/examples/embedding/xml/xslt/projectteam2fo.xsl (original)
+++ xmlgraphics/fop/trunk/examples/embedding/xml/xslt/projectteam2fo.xsl Tue Jan 17 12:28:35 2006
@@ -35,7 +35,7 @@
           <fo:block font-size="12pt" space-after="5mm">Version <xsl:value-of select="$versionParam"/>
           </fo:block>
           <fo:block font-size="10pt">
-            <fo:table table-layout="fixed">
+            <fo:table table-layout="fixed" width="100%" border-collapse="separate">
               <fo:table-column column-width="4cm"/>
               <fo:table-column column-width="4cm"/>
               <fo:table-column column-width="5cm"/>



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org