Developing ColdFusion 9 Applications

Using the Document class

The Document class is the proxy for the ColdFusion Document service, which provides the functionality of the cfdocument tag and its child cfdocumentsection and cfdocumentitem tags.
  • You specify the cfdocument attributes as Document object properties. You specify document content that is not in a section as a content element of the document object.

  • You represent document sections in the documentSection element of the document object. The documentSection element is an arrays of objects, each of which represents a single document section. These objects include a content element for the section content, an optional documentItem element for the document items, and elements for any other section attributes.

  • You represent all document items in a document section (or the document object) as an array of objects with type and content elements. The array element type field specifies whether the item is a header, footer, or page break. You specify the document item array as a documentItem element of the document object or a documentSection object.

  • You call the document object execute() function to run the service.

The following excerpt from the full example shows how to create sections and items and add them to a document:

[Bindable] 
var docItem:Array = [{type:"header",content:"<font size='-3'> 
<i>Salary Report</i></font>"},{type:"footer", 
content:"<font size='-3'> 
Page #cfdocument.currentpagenumber#</font>"}]; 
 
[Bindable]var docSectionItem:Array = [{content:"<table width='95%' 
border='2' cellspacing='2' cellpadding='2' > 
<tr><th>Salary</th></tr><tr> 
<td><font size='-1'>John</font></td> 
<td align='right'><font size='-1'>Guess What</font></td></tr> 
<tr><td align='right'><font size='-1'>Total</font></td> 
<td align='right'><font size='-1'>Peanuts</font></td></tr>", 
documentitem:docItem},{content:"content2",documentitem:docItem}]; 
. 
. 
. 
cfDoc.documentSection = docSectionItem; 

The following example shows some typical document use:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
layout="vertical" xmlns:cf="coldfusion.service.mxml.*" 
creationComplete="init()"> 
<mx:Script> 
    <![CDATA[ 
    import mx.controls.Alert; 
    import mx.rpc.events.ResultEvent; 
    import coldfusion.service.PdfParam; 
 
    [Bindable] 
    var docItem:Array = [{type:"header",content:" 
    <font size='-3'><i>Salary Report</i></font>"}, 
    {type:"footer",content:"<font size='-3'> 
    Page <cfoutput>#cfdocument.currentpagenumber# 
    </cfoutput></font>"}]; 
 
    [Bindable] 
    var docSection:Array = 
    [{content:"content1"},{content:"content2"}, 
    {content:"content3"}]; 
 
    [Bindable] 
    var docSectionItem:Array = 
    [{content:"content1",documentitem:docItem}, 
    {content:"content2",documentitem:docItem}, 
    {content:"content3",documentitem:docItem}]; 
    [Bindable] 
    var res:String = new String(); 
    private function init():void 
        { 
            doctestnow.execute(); 
        } 
    private function handleResult(event:ResultEvent):void 
        { 
            res=event.result.toString(); 
            //Alert.show("httpurl= "+event.result.toString()); 
        } 
        private function handleError(event:Event):void 
        { 
            mx.controls.Alert.show(event.toString()); 
        } 
        ]]> 
</mx:Script> 
<cf:Config id="configid" cfServer="localhost" 
cfPort="80" servicePassword="service" serviceUserName="service" /> 
 
        <!-- simple case--> 
        <cf:Document id="doctestnow" action="generate" 
        format="flashpaper" result="handleResult(event)" 
        fault="handleError(event)" 
        content="&lt;table&gt;&lt;tr&gt;&lt;td&gt;bird&lt;/td&gt;&lt;td&gt; 
        1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;fruit&lt;/td&gt;&lt; 
        td&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;rose&lt;/td&gt; 
        &lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;"/> 
        <!--doc item case --> 
        <!--<cf:Document id="doctestnow" action="generate" 
        format="flashpaper" result="handleResult(event)" 
        fault="handleError(event)" documentItem="{docItem}"/>--> 
        <!-- doc section case--> 
        <!--<cf:Document id="doctestnow" action="generate" 
        format="flashpaper" result="handleResult(event)" 
        fault="handleError(event)" documentSection="{docSection}"/>--> 
 
        <!-- doc section and doc item case 
        <cf:Document id="doctestnow" action="generate" 
        format="flashpaper" result="handleResult(event)" 
        fault="handleError(event)" documentSection="{docSectionItem}" />--> 
        <mx:SWFLoader source="{res}"/> 
</mx:Application>