code: public void beforePropertyChange(String propertyName) {
  		// do we have any text to do anything with?
  		// if not, then just return without action.
  		if(this.buffer.length() == 0) return;
  		
  		if(propertyName.startsWith(RtfProperty.CHARACTER)) {
  			// this is a character change,
  			// add a new chunk to the current paragraph using current character settings.
  			Chunk chunk = new Chunk();
  			chunk.append(this.buffer.toString());
  			this.buffer = new StringBuffer(255);
  			HashMap charProperties = this.rtfParser.getState().properties.getProperties(RtfProperty.CHARACTER);
  			String defFont = (String)charProperties.get(RtfProperty.CHARACTER_FONT);
  			if(defFont == null) defFont = "0";
  			RtfDestinationFontTable fontTable = (RtfDestinationFontTable)this.rtfParser.getDestination("fonttbl");
  			Font currFont = fontTable.getFont(defFont);
  			int fs = Font.NORMAL;
  			if(charProperties.containsKey(RtfProperty.CHARACTER_BOLD)) fs |= Font.BOLD; 
  			if(charProperties.containsKey(RtfProperty.CHARACTER_ITALIC)) fs |= Font.ITALIC;
  			if(charProperties.containsKey(RtfProperty.CHARACTER_UNDERLINE)) fs |= Font.UNDERLINE;
  			Font useFont = FontFactory.getFont(currFont.getFamilyname(), 12, fs, new Color(0,0,0));
  			
  			
  			chunk.setFont(useFont);
  			if(iTextParagraph == null) this.iTextParagraph = new Paragraph();
  			this.iTextParagraph.add(chunk);
  
  		} else {
  			if(propertyName.startsWith(RtfProperty.PARAGRAPH)) {
  				// this is a paragraph change. what do we do?
  			} else {
  				if(propertyName.startsWith(RtfProperty.SECTION)) {
  					
  				} else {
  					if(propertyName.startsWith(RtfProperty.DOCUMENT)) {
  
  					}
  				}
  			}
  		}		
  	}
docs: /* (non-Javadoc)
  @see com.lowagie.text.rtf.parser.properties.RtfPropertyListener#beforeChange(java.lang.String)