I'm pulling my hair out over this one! I'm using ColdFusion to generate .rtf files like the one below for printing Avery mailing labels. For some reason, a space appears before each name in the first column, but only after the first row. This has me stumped because I've looked at the source being generated and don't see an extra character before the name, even though when I open the .rtf in a text editor I can delete the character manually to fix this. Can anyone tell me why that extra space is there? You can download the actual .rtf file at this URL:

<http://www.bitmojo.com/Avery-Label-Test.rtf>

Well I guess I can't post images...feel free to ask for a link if you need clarification.

Adding this here since it was too long for a comment:

I'm using the CF\_AVERYRTF.CFM custom tag from over ten years ago...hasn't been updated since to my knowledge. I'll edit my question to add the code that actually generates and saves out the RTF. It uses cfsavecontent, cfscript and writeoutput to create the variable that gets saved to disk as the .rtf file, and when I cfdump that variable before the .rtf gets written to disk I don't see any extra characters before the names, but when I open the .rtf file source in my code editor I see a space before each name, and when I open the .rtf in the text editor on my mac I only see spaces before the names in the first column after the first row...that's what's driving me crazy, seeing different things depending on where and how I'm looking at the data...that's why I posted the example file, so someone could take a look and at least verify what I'm seeing. Here's an image of the symptom as it appears on my Mac (spaces circled) 

[screen shot http://www.bitmojo.com/Avery-Label-Screen-Shot.png](http://www.bitmojo.com/Avery-Label-Screen-Shot.png)

Also here's the code that generates the data:

```
<cfsavecontent variable="ThisTag.GeneratedRTF">
<cfscript>
// open RTF document with header information
writeOutput("{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\fswiss Arial;}{\f1\fswiss Helvetica;}{\f2\fswiss Impact;}{\f3\froman Times New Roman;}}");
writeOutput("{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red255\green255\blue255;}");
writeOutput("{\info{\title VFIVE Label Generator (#request.rtfLabels.labeltitle# Output)}{\author cf_averyRTF $Revision: 1.17 $}{\operator cf_averyRTF resides at http://rtf.vfive.com}{\*\company VFIVE (http://www.vfive.com)}{\creatim\yr#Year(now())#\mo#Month(now())#\dy#Day(now())#\hr#Hour(now())#\min#Minute(now())#}{\version1}{\edmins0}{\nofpages1}{\nofwords0}{\nofchars0}{\nofcharsws0}{\vern1000}}\paperw#request.rtfLabels.paperw#\paperh#request.rtfLabels.paperh#\margl#request.rtfLabels.margl#\margr#request.rtfLabels.margr#\margt#request.rtfLabels.margt#\margb#request.rtfLabels.margb#");
if (Attributes.landscape)
{
    writeOutput("\landscape");  
}
writeOutput("\gutter#request.rtfLabels.gutter# \widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\horzdoc \jexpand\viewkind1\viewscale#request.rtfLabels.viewscale#\nolnhtadjtbl \fet0\sectd \linex#request.rtfLabels.linex#\sectdefaultcl");

// loop over each row in the dataset
for (ii = 1; ii LTE arrayLen(thisTag.assocAttribs); ii = ii + 1)
{

    // if this is the first cell of a row, create the row (like <tr>)
    if (NOT ((ii + request.rtfLabels.columns - 1) MOD request.rtfLabels.columns))
    {
        // output the <tr>-like row start, cellBoundary
        writeOutput("\trowd \trrh#request.rtfLabels.trrhcell#\trkeep" & cellBoundary);

        // output row setup (align, indent, etc)
        writeOutput(" \pard\plain \q#request.rtfLabels.textalign# \li#request.rtfLabels.li#\ri#request.rtfLabels.ri#\widctlpar\intbl\faauto \f#request.rtfLabels.defaultfontface#\fs20\lang1033\langfe1033");
    }

    // output each individual cell header (like <td>)
    writeOutput("{\#request.rtfLabels.bold#\fs#request.rtfLabels.defaultfontsize#\f#request.rtfLabels.defaultfontface# ");

    // output barcode on top if appropriate
    if (len(trim(thisTag.assocAttribs[ii].zipCode)) AND thisTag.assocAttribs[ii].barPos EQ "top")
    {
        writeOutput("{\field\flddirty{\*\fldinst { BARCODE }{\lang1024\langfe1024\noproof #ThisTag.AssocAttribs[ii].zipcode#}{\\u  }}{\fldrslt }}\par");
    }

    // loop over the lines of content in this cell
    for (jj = 1; jj LTE arrayLen(ThisTag.AssocAttribs[ii].arrCell); jj = jj + 1)
    {

        // content to be displayed?
        if (len(trim(thisTag.assocAttribs[ii].arrCell[jj].content)) OR NOT thisTag.assocAttribs[ii].stripBlankLines)
        {
            // are we bolding this line of content?
            if (thisTag.assocAttribs[ii].arrCell[jj].bold)
            {
                writeOutput("\b");
            }
            else
            {
                writeOutput("\b0");
            }

            writeOutput("\fs#ThisTag.AssocAttribs[ii].arrCell[jj].fs#\f#ThisTag.AssocAttribs[ii].arrCell[jj].f##ThisTag.AssocAttribs[ii].arrCell[jj].content#");

            if (jj LT arrayLen(ThisTag.AssocAttribs[ii].arrCell))
            {
                writeOutput("\par");
            }
        }
    }

    // close out cell (like a </td>)
    writeOutput("}{\fs#request.rtfLabels.defaultfontsize#\f#request.rtfLabels.defaultfontface# ");

    // output barcode on bottom if appropriate
    if (len(trim(thisTag.assocAttribs[ii].zipCode)) AND thisTag.assocAttribs[ii].barPos EQ "bottom")
    {
        writeOutput(" {\field\flddirty{\*\fldinst { BARCODE }{\lang1024\langfe1024\noproof #ThisTag.AssocAttribs[ii].zipcode#}{\\u  }}{\fldrslt }}");
    }

    // prepare to close this cell </td>
    writeOutput("\cell } ");

    // close this cell out like a </td>
    if (ii MOD request.rtfLabels.columns)
    {
        writeOutput(" \pard \q#request.rtfLabels.textalign# \li#request.rtfLabels.li#\ri#request.rtfLabels.ri#\widctlpar\intbl\faauto {\cell }");
    }
    else
    {
        writeOutput("\pard\plain \q#request.rtfLabels.textalign# \li#request.rtfLabels.li#\ri#request.rtfLabels.ri#\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright \fs#request.rtfLabels.defaultfontsize#\f#request.rtfLabels.defaultfontface#\lang1033\langfe1033");
    }

    // if this is the last cell of a row, end it (like a </tr>) --->
    if (NOT (ii MOD request.rtfLabels.columns))
    {
        // start close: output code + cellCloser + " \row }"
        writeOutput("\pard\plain \q#request.rtfLabels.textalign# \li#request.rtfLabels.li#\ri#request.rtfLabels.ri#\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright \fs#request.rtfLabels.defaultfontsize#\f#request.rtfLabels.defaultfontface#\lang1033\langfe1033 {\trowd \trrh#request.rtfLabels.trrhcell#\trkeep " & cellCloser & " \row }#chr(13)##chr(10)#");

        // add an extra spacer row?
        if (request.rtfLabels.useSpacer)
        {

            // output complete spacerRow as defined above           
            writeOutput(spacerRow);

        }
    }       

// end of outer for loop
}

// close out document
writeOutput("\pard \q#request.rtfLabels.textalign# \li#request.rtfLabels.li#\ri#request.rtfLabels.ri#\widctlpar\aspalpha\aspnum\faauto\adjustright { \par }{ \par }}");
</cfscript>
</cfsavecontent>

```