// ---------------------------------------------------------------------- public string ConvertRtf2Txt(string fileName) { // parser IRtfGroup rtfStructure = ParseRtf(fileName); if (rtfStructure == null) { return(string.Empty); } // interpreter logger RtfInterpreterListenerFileLogger interpreterLogger = null; if (!string.IsNullOrEmpty(InterpreterLogFileName)) { interpreterLogger = new RtfInterpreterListenerFileLogger(InterpreterLogFileName); } // text converter RtfTextConvertSettings textConvertSettings = new RtfTextConvertSettings(); textConvertSettings.BulletText = "-"; RtfTextConverter textConverter = new RtfTextConverter(textConvertSettings); // text interpreter RtfInterpreterTool.Interpret(rtfStructure, interpreterLogger, textConverter); return(textConverter.PlainText); } // ConvertRtf2Txt
} // EnsureDestinationDirectory // ---------------------------------------------------------------------- private string InterpretRtf(IRtfGroup rtfStructure) { string text = null; RtfInterpreterListenerFileLogger interpreterLogger = null; try { // logger if (settings.LogInterpreter) { string logFileName = settings.BuildDestinationFileName( settings.LogDirectory, RtfInterpreterListenerFileLogger.DefaultLogFileExtension); interpreterLogger = new RtfInterpreterListenerFileLogger(logFileName); } // text converter RtfTextConverter textConverter = null; if (settings.SaveText) { RtfTextConvertSettings textConvertSettings = new RtfTextConvertSettings(); textConvertSettings.IsShowHiddenText = settings.ShowHiddenText; textConverter = new RtfTextConverter(textConvertSettings); } // image converter RtfImageConverter imageConverter = null; if (settings.SaveImage) { RtfVisualImageAdapter imageAdapter = new RtfVisualImageAdapter( settings.ImageFileNamePattern, settings.ImageFormat); RtfImageConvertSettings imageConvertSettings = new RtfImageConvertSettings(imageAdapter); imageConvertSettings.ImagesPath = settings.DestinationDirectory; imageConvertSettings.ScaleImage = settings.ScaleImage; imageConvertSettings.BackgroundColor = settings.ImageBackgroundColor; imageConvertSettings.ScaleImage = !settings.UnscaledImages; if (settings.ExtendedImageScale) { imageConvertSettings.ScaleExtension = 0.5f; } imageConverter = new RtfImageConverter(imageConvertSettings); } // rtf interpreter RtfInterpreterSettings interpreterSettings = new RtfInterpreterSettings(); interpreterSettings.IgnoreDuplicatedFonts = settings.IgnoreDuplicatedFonts; interpreterSettings.IgnoreUnknownFonts = settings.IgnoreUnknownFonts; // interpret the rtf structure using the extractors RtfInterpreterTool.Interpret(rtfStructure, interpreterLogger, textConverter, imageConverter); // get the resulting text if (textConverter != null) { text = textConverter.PlainText; } } catch (Exception e) { if (interpreterLogger != null) { interpreterLogger.Dispose(); } Console.WriteLine("error while interpreting rtf: " + e.Message); ExitCode = ProgramExitCode.InterpretRtf; return(null); } return(text); } // InterpretRtf