488 lines
22 KiB
C#
488 lines
22 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Globalization;
|
|
using iTextSharp.text;
|
|
using iTextSharp.text.pdf;
|
|
using iTextSharp.text.rtf.direct;
|
|
using iTextSharp.text.rtf.graphic;
|
|
using iTextSharp.text.rtf.parser;
|
|
using iTextSharp.text.rtf.document;
|
|
using iTextSharp.text.rtf.parser.ctrlwords;
|
|
/*
|
|
* $Id: RtfDestinationShppict.cs,v 1.2 2008/05/13 11:26:00 psoares33 Exp $
|
|
*
|
|
*
|
|
* Copyright 2007 by Howard Shank (hgshank@yahoo.com)
|
|
*
|
|
* The contents of this file are subject to the Mozilla Public License Version 1.1
|
|
* (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.mozilla.org/MPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
* for the specific language governing rights and limitations under the License.
|
|
*
|
|
* The Original Code is 'iText, a free JAVA-PDF library'.
|
|
*
|
|
* The Initial Developer of the Original Code is Bruno Lowagie. Portions created by
|
|
* the Initial Developer are Copyright (C) 1999-2006 by Bruno Lowagie.
|
|
* All Rights Reserved.
|
|
* Co-Developer of the code is Paulo Soares. Portions created by the Co-Developer
|
|
* are Copyright (C) 2000-2006 by Paulo Soares. All Rights Reserved.
|
|
*
|
|
* Contributor(s): all the names of the contributors are added in the source code
|
|
* where applicable.
|
|
*
|
|
* Alternatively, the contents of this file may be used under the terms of the
|
|
* LGPL license (the ?GNU LIBRARY GENERAL PUBLIC LICENSE?), in which case the
|
|
* provisions of LGPL are applicable instead of those above. If you wish to
|
|
* allow use of your version of this file only under the terms of the LGPL
|
|
* License and not to allow others to use your version of this file under
|
|
* the MPL, indicate your decision by deleting the provisions above and
|
|
* replace them with the notice and other provisions required by the LGPL.
|
|
* If you do not delete the provisions above, a recipient may use your version
|
|
* of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE.
|
|
*
|
|
* This library is free software; you can redistribute it and/or modify it
|
|
* under the terms of the MPL as stated above or under the terms of the GNU
|
|
* Library General Public License as published by the Free Software Foundation;
|
|
* either version 2 of the License, or any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
* FOR A PARTICULAR PURPOSE. See the GNU Library general Public License for more
|
|
* details.
|
|
*
|
|
* If you didn't download this code from the following link, you should check if
|
|
* you aren't using an obsolete version:
|
|
* http://www.lowagie.com/iText/
|
|
*/
|
|
|
|
namespace iTextSharp.text.rtf.parser.destinations {
|
|
|
|
/**
|
|
* <code>RtfDestinationShppict</code> handles data destined for picture destinations
|
|
*
|
|
* @author Howard Shank (hgshank@yahoo.com)
|
|
* @since 2.0.8
|
|
*/
|
|
public class RtfDestinationShppict : RtfDestination {
|
|
private ByteBuffer data = null;
|
|
|
|
private StringBuilder hexChars = new StringBuilder(0);
|
|
private StringBuilder buffer = new StringBuilder();
|
|
|
|
/* picttype */
|
|
private int pictureType = Image.ORIGINAL_NONE;
|
|
public const int ORIGINAL_NONE = 0;
|
|
public const int ORIGINAL_GIF = 3;
|
|
public const int ORIGINAL_TIFF = 5;
|
|
public const int ORIGINAL_PS = 7;
|
|
|
|
// emfblip - EMF (nhanced metafile) - NOT HANDLED
|
|
// pngblip int ORIGINAL_PNG = 2;
|
|
// jpegblip Image.ORIGINAL_JPEG = 1; ORIGINAL_JPEG2000 = 8;
|
|
|
|
// shppict - Destination
|
|
// nonshpict - Destination - SKIP THIS
|
|
// macpict - Mac QuickDraw- NOT HANDLED
|
|
// pmmetafileN - OS/2 Metafile - NOT HANDLED
|
|
// N * Meaning
|
|
// 0x0004 PU_ARBITRARY
|
|
// 0x0008 PU_PELS
|
|
// 0x000C PU_LOMETRIC
|
|
// 0x0010 PU_HIMETRIC
|
|
// 0x0014 PU_LOENGLISH
|
|
// 0x0018 PU_HIENGLISH
|
|
// 0x001C PU_TWIPS
|
|
//private int pmmetafile = 0;
|
|
// wmetafileN Image.RIGINAL_WMF = 6;
|
|
// N * Type
|
|
// 1 = MM_TEXT
|
|
// 2 = M_LOMETRIC
|
|
// 3 = MM_HIMETRIC
|
|
// 4 = MM_LOENGLISH
|
|
// 5 = MM_HIENGLISH
|
|
// 6 = MM_TWIPS
|
|
// 7 = MM_ISOTROPIC
|
|
// 8 = MM_ANISOTROPIC
|
|
// dibitmapN - DIB - Convert to BMP?
|
|
// wbitmapN Image.ORIGINAL_BMP = 4;
|
|
|
|
/* bitapinfo */
|
|
// wbmbitspixelN - number of bits per pixel - 1 monochrome, 4 16 color, 8 256 color, 24 RGB - Default 1
|
|
//private int bitsPerPixel = 1;
|
|
// wbmplanesN - number of color planes - must be 1
|
|
//private int planes = 1;
|
|
// wbmwidthbytesN - number of bytes in each raster line
|
|
//private int widthBytes = 0;
|
|
|
|
|
|
|
|
/* pictsize */
|
|
// picwN Ext field if the picture is a Windows metafile; picture width in pixels if the picture is a bitmap or
|
|
// from quickdraw
|
|
private long width = 0;
|
|
// pichN
|
|
private long height = 0;
|
|
// picwgoalN
|
|
private long desiredWidth = 0;
|
|
// picgoalN
|
|
private long desiredHeight = 0;
|
|
// picscalexN
|
|
private int scaleX = 100;
|
|
// picscaleyN
|
|
private int scaleY = 100;
|
|
// picscaled - macpict setting
|
|
//private bool scaled = false;
|
|
// picprop
|
|
//private bool inlinePicture = false;
|
|
// defshp
|
|
//private bool wordArt = false;
|
|
// piccroptN
|
|
private int cropTop = 0;
|
|
// piccropbN
|
|
private int cropBottom = 0;
|
|
// piccroplN
|
|
private int cropLeft = 0;
|
|
// piccroprN
|
|
private int cropRight = 0;
|
|
|
|
/* metafileinfo */
|
|
// picbmp
|
|
//private bool bitmap = false;
|
|
//picbppN - Valid 1,4,8,24
|
|
//private int bbp = 1;
|
|
|
|
/* data */
|
|
// binN
|
|
// 0 = HEX, 1 = BINARY
|
|
public const int FORMAT_HEXADECIMAL = 0;
|
|
public const int FORMAT_BINARY = 1;
|
|
private int dataFormat = FORMAT_HEXADECIMAL;
|
|
private long binaryLength = 0;
|
|
// blipupiN
|
|
//private int unitsPerInch = 0;
|
|
// bliptagN
|
|
//private String tag = "";
|
|
private const int NORMAL = 0;
|
|
private const int BLIPUID = 1;
|
|
|
|
//private int state = NORMAL;
|
|
/**
|
|
* Constant for converting pixels to twips
|
|
*/
|
|
private const int PIXEL_TWIPS_FACTOR = 15;
|
|
|
|
private MemoryStream dataOS = null;
|
|
|
|
public RtfDestinationShppict() : base(null) {
|
|
this.pictureType = pictureType; //get rid of a warning
|
|
}
|
|
|
|
/**
|
|
* Constructs a new RtfDestinationShppict.
|
|
*/
|
|
public RtfDestinationShppict(RtfParser parser) : base(parser) {
|
|
}
|
|
|
|
/* (non-Javadoc)
|
|
* @see com.lowagie.text.rtf.direct.RtfDestination#closeDestination()
|
|
*/
|
|
public override bool CloseDestination() {
|
|
if (this.rtfParser.IsImport()) {
|
|
if (this.buffer.Length>0) {
|
|
WriteBuffer();
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
/* (non-Javadoc)
|
|
* @see com.lowagie.text.rtf.direct.RtfDestination#handleGroupEnd()
|
|
*/
|
|
public override bool HandleCloseGroup() {
|
|
this.OnCloseGroup(); // event handler
|
|
|
|
if (this.rtfParser.IsImport()) {
|
|
if (this.buffer.Length>0) {
|
|
WriteBuffer();
|
|
}
|
|
if (dataOS != null) {
|
|
AddImage();
|
|
dataOS = null;
|
|
}
|
|
this.WriteText("}");
|
|
return true;
|
|
}
|
|
if (this.rtfParser.IsConvert()) {
|
|
}
|
|
return true;
|
|
}
|
|
|
|
private bool AddImage() {
|
|
Image img = null;
|
|
try {
|
|
img = Image.GetInstance(dataOS.ToArray());
|
|
} catch {
|
|
}
|
|
// if (img != null) {
|
|
// FileOutputStream out =null;
|
|
// try {
|
|
// out = new FileOutputStream("c:\\test.png");
|
|
// out.Write(img.GetOriginalData());
|
|
// out.Close();
|
|
// } catch (FileNotFoundException e1) {
|
|
// // TODO Auto-generated catch block
|
|
// e1.PrintStackTrace();
|
|
// } catch (IOException e1) {
|
|
// // TODO Auto-generated catch block
|
|
// e1.PrintStackTrace();
|
|
// }
|
|
|
|
if (img != null) {
|
|
img.ScaleAbsolute((float)this.desiredWidth/PIXEL_TWIPS_FACTOR, (float)this.desiredHeight/PIXEL_TWIPS_FACTOR);
|
|
img.ScaleAbsolute((float)this.width/PIXEL_TWIPS_FACTOR, (float)this.height/PIXEL_TWIPS_FACTOR);
|
|
img.ScalePercent((float)this.scaleX, this.scaleY);
|
|
|
|
try {
|
|
if (this.rtfParser.IsImport()) {
|
|
RtfDocument rtfDoc = this.rtfParser.GetRtfDocument();
|
|
RtfImage rtfImage = new RtfImage(rtfDoc, img);
|
|
rtfDoc.Add(rtfImage);
|
|
}
|
|
if (this.rtfParser.IsConvert()) {
|
|
this.rtfParser.GetDocument().Add(img);
|
|
}
|
|
} catch {
|
|
}
|
|
}
|
|
dataFormat = FORMAT_HEXADECIMAL;
|
|
return true;
|
|
}
|
|
|
|
/* (non-Javadoc)
|
|
* @see com.lowagie.text.rtf.direct.RtfDestination#handleGroupStart()
|
|
*/
|
|
public override bool HandleOpenGroup() {
|
|
this.OnOpenGroup(); // event handler
|
|
|
|
if (this.rtfParser.IsImport()) {
|
|
}
|
|
if (this.rtfParser.IsConvert()) {
|
|
}
|
|
return true;
|
|
}
|
|
/* (non-Javadoc)
|
|
* @see com.lowagie.text.rtf.parser.destinations.RtfDestination#handleOpenNewGroup()
|
|
*/
|
|
public override bool HandleOpeningSubGroup() {
|
|
if (this.rtfParser.IsImport()) {
|
|
if (this.buffer.Length>0) {
|
|
WriteBuffer();
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
/* (non-Javadoc)
|
|
* @see com.lowagie.text.rtf.direct.RtfDestination#handleCharacter(int)
|
|
*/
|
|
public override bool HandleCharacter(int ch) {
|
|
|
|
if (this.rtfParser.IsImport()) {
|
|
if (buffer.Length > 254)
|
|
WriteBuffer();
|
|
}
|
|
if (data == null) data = new ByteBuffer();
|
|
switch (dataFormat) {
|
|
case FORMAT_HEXADECIMAL:
|
|
hexChars.Append(ch);
|
|
if (hexChars.Length == 2) {
|
|
try {
|
|
data.Append((char)int.Parse(hexChars.ToString(), NumberStyles.HexNumber));
|
|
} catch {
|
|
}
|
|
hexChars = new StringBuilder();
|
|
}
|
|
break;
|
|
case FORMAT_BINARY:
|
|
if (dataOS == null) {
|
|
dataOS = new MemoryStream();
|
|
}
|
|
// HGS - FIX ME IF PROBLEM!
|
|
dataOS.WriteByte((byte)ch);
|
|
// PNG signature should be.
|
|
// (decimal) 137 80 78 71 13 10 26 10
|
|
// (hexadecimal) 89 50 4e 47 0d 0a 1a 0a
|
|
// (ASCII C notation) \211 P N G \r \n \032 \n
|
|
|
|
binaryLength--;
|
|
if (binaryLength == 0) { dataFormat = FORMAT_HEXADECIMAL; }
|
|
break;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public override bool HandleControlWord(RtfCtrlWordData ctrlWordData) {
|
|
bool result = false;
|
|
bool skipCtrlWord = false;
|
|
if (this.rtfParser.IsImport()) {
|
|
skipCtrlWord = true;
|
|
if (ctrlWordData.ctrlWord.Equals("shppict")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("nonshppict")) { // never gets here because this is a destination set to null
|
|
skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;
|
|
}
|
|
if (ctrlWordData.ctrlWord.Equals("blipuid")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("picprop")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("pict")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("emfblip")) { result = true; pictureType = Image.ORIGINAL_NONE;}
|
|
if (ctrlWordData.ctrlWord.Equals("pngblip")) { result = true; pictureType = Image.ORIGINAL_PNG;}
|
|
if (ctrlWordData.ctrlWord.Equals("jepgblip")) { result = true; pictureType = Image.ORIGINAL_JPEG;}
|
|
if (ctrlWordData.ctrlWord.Equals("macpict")) { result = true; pictureType = Image.ORIGINAL_NONE;}
|
|
if (ctrlWordData.ctrlWord.Equals("pmmetafile")) { result = true; pictureType = Image.ORIGINAL_NONE;}
|
|
if (ctrlWordData.ctrlWord.Equals("wmetafile")) { result = true; pictureType = Image.ORIGINAL_WMF;}
|
|
if (ctrlWordData.ctrlWord.Equals("dibitmap")) { result = true; pictureType = Image.ORIGINAL_NONE;}
|
|
if (ctrlWordData.ctrlWord.Equals("wbitmap")) { result = true; pictureType = Image.ORIGINAL_BMP;}
|
|
/* bitmap information */
|
|
if (ctrlWordData.ctrlWord.Equals("wbmbitspixel")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("wbmplanes")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("wbmwidthbytes")) { result = true;}
|
|
/* picture size, scaling and cropping */
|
|
if (ctrlWordData.ctrlWord.Equals("picw")) { this.width = ctrlWordData.LongValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("pich")) { this.height = ctrlWordData.LongValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("picwgoal")) { this.desiredWidth = ctrlWordData.LongValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("pichgoal")) { this.desiredHeight = ctrlWordData.LongValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("picscalex")) { this.scaleX = ctrlWordData.IntValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("picscaley")) { this.scaleY = ctrlWordData.IntValue();result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("picscaled")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("picprop")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("defshp")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("piccropt")) { this.cropTop = ctrlWordData.IntValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("piccropb")) { this.cropBottom = ctrlWordData.IntValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("piccropl")) { this.cropLeft = ctrlWordData.IntValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("piccropr")) { this.cropRight = ctrlWordData.IntValue(); result = true;}
|
|
/* metafile information */
|
|
if (ctrlWordData.ctrlWord.Equals("picbmp")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("picbpp")) { result = true;}
|
|
/* picture data */
|
|
if (ctrlWordData.ctrlWord.Equals("bin")) {
|
|
this.dataFormat = FORMAT_BINARY;
|
|
// set length to param
|
|
this.binaryLength = ctrlWordData.LongValue();
|
|
this.rtfParser.SetTokeniserStateBinary(binaryLength);
|
|
result = true;
|
|
}
|
|
if (ctrlWordData.ctrlWord.Equals("blipupi")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("blipuid")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("bliptag")) { result = true;}
|
|
}
|
|
if (this.rtfParser.IsConvert()) {
|
|
if (ctrlWordData.ctrlWord.Equals("shppict")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("nonshppict")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("blipuid")) { result = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("pict")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("emfblip")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("pngblip")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("jepgblip")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("macpict")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("pmmetafile")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("wmetafile")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("dibitmap")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("wbitmap")) { result = true;}
|
|
/* bitmap information */
|
|
if (ctrlWordData.ctrlWord.Equals("wbmbitspixel")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("wbmplanes")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("wbmwidthbytes")) { result = true;}
|
|
/* picture size, scaling and cropping */
|
|
if (ctrlWordData.ctrlWord.Equals("picw")) { this.width = ctrlWordData.LongValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("pich")) { this.height = ctrlWordData.LongValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("picwgoal")) { this.desiredWidth = ctrlWordData.LongValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("pichgoal")) { this.desiredHeight = ctrlWordData.LongValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("picscalex")) { this.scaleX = ctrlWordData.IntValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("picscaley")) { this.scaleY = ctrlWordData.IntValue();result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("picscaled")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("picprop")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("defshp")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("piccropt")) { this.cropTop = ctrlWordData.IntValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("piccropb")) { this.cropBottom = ctrlWordData.IntValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("piccropl")) { this.cropLeft = ctrlWordData.IntValue(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("piccropr")) { this.cropRight = ctrlWordData.IntValue(); result = true;}
|
|
/* metafile information */
|
|
if (ctrlWordData.ctrlWord.Equals("picbmp")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("picbpp")) { result = true;}
|
|
/* picture data */
|
|
if(ctrlWordData.ctrlWord.Equals("bin")) {
|
|
dataFormat = FORMAT_BINARY; result = true;
|
|
}
|
|
if (ctrlWordData.ctrlWord.Equals("blipupi")) { result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("blipuid")) { skipCtrlWord = true; this.rtfParser.SetTokeniserStateSkipGroup(); result = true;}
|
|
if (ctrlWordData.ctrlWord.Equals("bliptag")) { result = true;}
|
|
|
|
}
|
|
if (!skipCtrlWord) {
|
|
switch (this.rtfParser.GetConversionType()) {
|
|
case RtfParser.TYPE_IMPORT_FULL:
|
|
WriteBuffer();
|
|
WriteText(ctrlWordData.ToString());
|
|
result = true;
|
|
break;
|
|
case RtfParser.TYPE_IMPORT_FRAGMENT:
|
|
WriteBuffer();
|
|
WriteText(ctrlWordData.ToString());
|
|
result = true;
|
|
break;
|
|
case RtfParser.TYPE_CONVERT:
|
|
result = true;
|
|
break;
|
|
default: // error because is should be an import or convert
|
|
result = false;
|
|
break;
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/* (non-Javadoc)
|
|
* @see com.lowagie.text.rtf.direct.RtfDestination#setDefaults()
|
|
*/
|
|
public override void SetToDefaults() {
|
|
|
|
this.buffer = new StringBuilder();
|
|
this.data = null;
|
|
this.width = 0;
|
|
this.height = 0;
|
|
this.desiredWidth = 0;
|
|
this.desiredHeight = 0;
|
|
this.scaleX = 100;
|
|
this.scaleY = 100;
|
|
//this.scaled = false;
|
|
//this.inlinePicture = false;
|
|
//this.wordArt = false;
|
|
this.cropTop = 0;
|
|
this.cropBottom = 0;
|
|
this.cropLeft = 0;
|
|
this.cropRight = 0;
|
|
//this.bitmap = false;
|
|
//this.bbp = 1;
|
|
this.dataFormat = FORMAT_HEXADECIMAL;
|
|
this.binaryLength = 0;
|
|
//this.unitsPerInch = 0;
|
|
//this.tag = "";
|
|
}
|
|
|
|
private void WriteBuffer() {
|
|
WriteText(this.buffer.ToString());
|
|
}
|
|
private void WriteText(String value) {
|
|
if (this.rtfParser.GetState().newGroup) {
|
|
this.rtfParser.GetRtfDocument().Add(new RtfDirectContent("{"));
|
|
this.rtfParser.GetState().newGroup = false;
|
|
}
|
|
if (value.Length > 0) {
|
|
this.rtfParser.GetRtfDocument().Add(new RtfDirectContent(value));
|
|
}
|
|
}
|
|
|
|
}
|
|
} |