Index: src/java/org/apache/fop/apps/Fop.java
===================================================================
--- src/java/org/apache/fop/apps/Fop.java	(revision 225448)
+++ src/java/org/apache/fop/apps/Fop.java	(working copy)
@@ -33,6 +33,7 @@
 import org.xml.sax.helpers.DefaultHandler;
 
 // FOP
+import org.apache.fop.area.AreaTreeHandler;
 import org.apache.fop.fo.Constants;
 import org.apache.fop.fo.FOTreeBuilder;
 
@@ -61,6 +62,9 @@
     // FOUserAgent object to set processing options
     private FOUserAgent foUserAgent = null;
 
+    // FOTreeBuilder object to maintain reference for access to results
+    private FOTreeBuilder foTreeBuilder = null;
+
     /**
      * Constructor for use with already-created FOUserAgents
      * @param renderType the type of renderer to use.  Must be one of
@@ -133,10 +137,27 @@
      * @throws FOPException if setting up the DefaultHandler fails
      */
     public DefaultHandler getDefaultHandler() throws FOPException {
-        return new FOTreeBuilder(renderType, foUserAgent, stream);
+        foTreeBuilder = new FOTreeBuilder(renderType, foUserAgent, stream);
+        return foTreeBuilder;
     }
 
     /**
+     * Returns the results of the last rendering process. Information includes
+     * the total number of pages generated and the number of pages per
+     * page-sequence.
+     */
+    public FormattingResults getResults() {
+        try {
+            if (foTreeBuilder.getEventHandler() instanceof AreaTreeHandler) {
+                return ((AreaTreeHandler)foTreeBuilder.getEventHandler()).getResults();
+            }
+            return null;   
+        } catch (NullPointerException e) {
+            return null;
+        }
+    }
+
+    /**
      * @return the list of URLs to all libraries.
      * @throws MalformedURLException In case there is a problem converting java.io.File
      * instances to URLs.
Index: src/java/org/apache/fop/fo/FOTreeBuilder.java
===================================================================
--- src/java/org/apache/fop/fo/FOTreeBuilder.java	(revision 225448)
+++ src/java/org/apache/fop/fo/FOTreeBuilder.java	(working copy)
@@ -343,6 +343,13 @@
     }
 
     /**
+     * Provides access to the underlying FOEventHandler object.
+     * @return the FOEventHandler object
+     */
+    public FOEventHandler getEventHandler() {
+        return foEventHandler;
+    }
+    /**
      * Resets this object for another run.
      */
     public void reset() {
Index: src/java/org/apache/fop/area/AreaTreeHandler.java
===================================================================
--- src/java/org/apache/fop/area/AreaTreeHandler.java	(revision 225448)
+++ src/java/org/apache/fop/area/AreaTreeHandler.java	(working copy)
@@ -35,6 +35,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.fop.apps.FOPException;
 import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.apps.FormattingResults;
 import org.apache.fop.fo.FOEventHandler;
 import org.apache.fop.fo.pagination.PageSequence;
 import org.apache.fop.fo.pagination.Root;
@@ -92,6 +93,9 @@
     // Each idref has a HashSet of Resolvable objects containing that idref
     private Map unresolvedIDRefs = new HashMap();
 
+     // The formatting results to be handed back to the caller.
+    private FormattingResults results = new FormattingResults();
+
     private static Log log = LogFactory.getLog(AreaTreeHandler.class);
 
     /**
@@ -209,6 +213,15 @@
     }
 
     /**
+     * Get information about the rendered output, like
+     * number of pages created.
+     * @return the results structure
+     */
+    public FormattingResults getResults() {
+        return this.results;
+    }
+
+    /**
      * Add an Resolvable object with an unresolved idref
      * @param idref the idref whose target id has not yet been located
      * @param res the Resolvable object needing the idref to be resolved
@@ -260,6 +273,8 @@
                 getLayoutManagerMaker().makePageSequenceLayoutManager(this,
                     pageSequence);
             pageSLM.activateLayout();
+            this.results.haveFormattedPageSequence(pageSequence, getAreaTreeModel().getPageCount(getAreaTreeModel().getPageSequenceCount()));
+            log.debug("Last page-sequence produced "+getAreaTreeModel().getPageCount(getAreaTreeModel().getPageSequenceCount())+" pages.");
         }
     }
 
Index: examples/embedding/java/embedding/ExampleFO2PDF.java
===================================================================
--- examples/embedding/java/embedding/ExampleFO2PDF.java	(revision 225432)
+++ examples/embedding/java/embedding/ExampleFO2PDF.java	(working copy)
@@ -37,6 +37,8 @@
 // FOP
 import org.apache.fop.apps.Fop;
 import org.apache.fop.apps.FOPException;
+import org.apache.fop.apps.FormattingResults;
+import org.apache.fop.apps.PageSequenceResults;
 
 /**
  * This class demonstrates the conversion of an FO file to PDF using FOP.
@@ -76,6 +78,15 @@
             
             // Start XSLT transformation and FOP processing
             transformer.transform(src, res);
+            
+            // Result processing
+            FormattingResults foResults = fop.getResults();
+            java.util.List pageSequences = foResults.getPageSequences();
+            for (java.util.Iterator it = pageSequences.iterator(); it.hasNext(); ) {
+                PageSequenceResults pageSequenceResults = (PageSequenceResults)it.next();
+                System.out.println("PageSequence " + pageSequenceResults.getID() + " generated " + pageSequenceResults.getPageCount() + " pages");
+            }
+            System.out.println("Generated " + foResults.getPageCount() + " pages in total");
 
         } catch (Exception e) {
             e.printStackTrace(System.err);
@@ -102,6 +113,7 @@
 
             //Setup input and output files            
             File fofile = new File(baseDir, "xml/fo/helloworld.fo");
+            // File fofile = new File(baseDir, "../fo/pagination/franklin_2pageseqs.fo");
             File pdffile = new File(outDir, "ResultFO2PDF.pdf");
 
             System.out.println("Input: XSL-FO (" + fofile + ")");
