Beispiel #1
0
        } // ValidateProgramSettings

        // ----------------------------------------------------------------------
        private IRtfGroup ParseRtf()
        {
            IRtfGroup rtfStructure;

            try
            {
                // rtf parser
                // open readonly - in case of dominant locks...
                using (FileStream stream = File.Open(settings.SourceFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                {
                    // parse the rtf structure
                    RtfParserListenerStructureBuilder structureBuilder = new RtfParserListenerStructureBuilder();
                    RtfParser parser = new RtfParser(structureBuilder);
                    parser.IgnoreContentAfterRootGroup = true; // support WordPad documents
                    parser.Parse(new RtfSource(stream));
                    rtfStructure = structureBuilder.StructureRoot;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("error while parsing rtf: " + e.Message);
                ExitCode = ProgramExitCode.ParseRtf;
                return(null);
            }

            return(rtfStructure);
        } // ParseRtf
        }         // InterpretRtf

        // ----------------------------------------------------------------------
        private void ConvertXml(IRtfDocument rtfDocument)
        {
            try
            {
                XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
                xmlWriterSettings.Indent      = true;
                xmlWriterSettings.IndentChars = ("  ");
                xmlWriterSettings.Encoding    = settings.Encoding;

                string fileName = settings.BuildDestinationFileName(null, RtfXmlConverter.DefaultXmlFileExtension);
                using (XmlWriter writer = XmlWriter.Create(fileName, xmlWriterSettings))
                {
                    RtfXmlConvertSettings xmlConvertSettings = new RtfXmlConvertSettings();
                    xmlConvertSettings.Prefix           = settings.XmlPrefix;
                    xmlConvertSettings.Ns               = settings.XmlNamespace;
                    xmlConvertSettings.IsShowHiddenText = settings.ShowHiddenText;
                    RtfXmlConverter xmlConverter = new RtfXmlConverter(rtfDocument, writer, xmlConvertSettings);
                    xmlConverter.Convert();
                    writer.Flush();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("error while converting to xml: " + e.Message);
                ExitCode = ProgramExitCode.ConvertXml;
            }
        }         // ConvertXml
Beispiel #3
0
        }         // ConvertHmtl

        // ----------------------------------------------------------------------
        private string SaveHmtl(string text)
        {
            if (!this.settings.SaveHtml)
            {
                return(null);
            }

            string fileName = this.settings.BuildDestinationFileName(null, RtfHtmlConverter.DefaultHtmlFileExtension);

            try
            {
                using (TextWriter writer = new StreamWriter(fileName, false, this.settings.Encoding))
                {
                    writer.Write(text);
                }
            }
            catch (Exception /*e*/)
            {
                //Console.WriteLine( "error while saving html: " + e.Message );
                ExitCode = ProgramExitCode.SaveHtml;
                return(null);
            }

            return(fileName);
        }         // SaveHmtl
Beispiel #4
0
        }         // ConvertHmtl

        // ----------------------------------------------------------------------
        private string SaveHmtl(string text)
        {
            if (!settings.SaveHtml)
            {
                return(null);
            }

            string fileName = settings.BuildDestinationFileName(null, RtfHtmlConverter.DefaultHtmlFileExtension);

            try
            {
                using (TextWriter writer = new StreamWriter(fileName, false, settings.Encoding))
                {
                    writer.Write(text);
                }
            }
            catch (Exception e)
            {
                MessageBox(IntPtr.Zero, "Error while saving HTML:\n" + e.Message, "Itenso.Rtf2Html", 0x010000);
                ExitCode = ProgramExitCode.SaveHtml;
                return(null);
            }

            return(fileName);
        }         // SaveHmtl
Beispiel #5
0
        }         // EnsureDestinationDirectory

        // ----------------------------------------------------------------------
        private IRtfDocument InterpretRtf(IRtfGroup rtfStructure)
        {
            IRtfDocument rtfDocument;
            RtfInterpreterListenerFileLogger interpreterLogger = null;

            try
            {
                // logger
                if (settings.LogInterpreter)
                {
                    string logFileName = settings.BuildDestinationFileName(
                        settings.LogDirectory,
                        RtfInterpreterListenerFileLogger.DefaultLogFileExtension);
                    interpreterLogger = new RtfInterpreterListenerFileLogger(logFileName);
                }


                // rtf parser
                // interpret the rtf structure using the extractors
                rtfDocument = RtfInterpreterTool.BuildDoc(rtfStructure, interpreterLogger);
            }
            catch (Exception e)
            {
                if (interpreterLogger != null)
                {
                    interpreterLogger.Dispose();
                }

                Console.WriteLine("error while interpreting rtf: " + e.Message);
                ExitCode = ProgramExitCode.InterpretRtf;
                return(null);
            }

            return(rtfDocument);
        }         // InterpretRtf
Beispiel #6
0
        }         // InterpretRtf

        // ----------------------------------------------------------------------
        private string SaveText(string text)
        {
            if (!settings.SaveText)
            {
                return(null);
            }

            string fileName = settings.BuildDestinationFileName(null, RtfTextConverter.DefaultTextFileExtension);

            try
            {
                using (TextWriter writer = new StreamWriter(fileName, false, settings.Encoding))
                {
                    writer.Write(text);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("error while saving raw text: " + e.Message);
                ExitCode = ProgramExitCode.SaveText;
                return(null);
            }

            return(fileName);
        }         // SaveText
Beispiel #7
0
        }         // Execute

        // ----------------------------------------------------------------------
        private bool ValidateProgramSettings()
        {
            if (!this.settings.IsValid)
            {
                ExitCode = ProgramExitCode.InvalidSettings;
                return(false);
            }

            return(true);
        }         // ValidateProgramSettings
        }         // EnsureDestinationDirectory

        // ----------------------------------------------------------------------
        private IRtfDocument InterpretRtf(IRtfGroup rtfStructure, IRtfVisualImageAdapter imageAdapter)
        {
            IRtfDocument rtfDocument;
            RtfInterpreterListenerFileLogger interpreterLogger = null;

            try
            {
                // logger
                if (settings.LogInterpreter)
                {
                    string logFileName = settings.BuildDestinationFileName(
                        settings.LogDirectory,
                        RtfInterpreterListenerFileLogger.DefaultLogFileExtension);
                    interpreterLogger = new RtfInterpreterListenerFileLogger(logFileName);
                }

                // image converter
                RtfImageConverter imageConverter = null;
                if (settings.SaveImage)
                {
                    RtfImageConvertSettings imageConvertSettings = new RtfImageConvertSettings(imageAdapter);
                    imageConvertSettings.ImagesPath      = settings.DestinationDirectory;
                    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
                rtfDocument = RtfInterpreterTool.BuildDoc(rtfStructure, interpreterSettings, interpreterLogger, imageConverter);
            }
            catch (Exception e)
            {
                if (interpreterLogger != null)
                {
                    interpreterLogger.Dispose();
                }

                Console.WriteLine("error while interpreting rtf: " + e.Message);
                ExitCode = ProgramExitCode.InterpretRtf;
                return(null);
            }

            return(rtfDocument);
        }         // InterpretRtf
Beispiel #9
0
        private void Exit(ProgramExitCode code)
        {
            if (code == ProgramExitCode.Success)
            {
                string       config      = Setting ? .Save( );
                FileStream   settingFile = File.OpenWrite(FileNameConst.SettingFile);
                StreamWriter writer      = new StreamWriter(settingFile);
                writer.Write(config);
                writer.Dispose( );
            }

            ShowExit( );
            Application.Stop( );
            Environment.Exit(( int )code);
        }
        }         // ParseRtf

        // ----------------------------------------------------------------------
        private void EnsureDestinationDirectory()
        {
            try
            {
                if (!Directory.Exists(settings.DestinationDirectory))
                {
                    Directory.CreateDirectory(settings.DestinationDirectory);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("error while creating destination directory: " + e.Message);
                ExitCode = ProgramExitCode.DestinationDirectory;
            }
        }         // EnsureDestinationDirectory
Beispiel #11
0
        }         // EnsureDestinationDirectory

        // ----------------------------------------------------------------------
        private IRtfDocument InterpretRtf(IRtfGroup rtfStructure, IRtfVisualImageAdapter imageAdapter)
        {
            IRtfDocument rtfDocument;
            RtfInterpreterListenerFileLogger interpreterLogger = null;

            try
            {
                // logger
                if (settings.LogInterpreter)
                {
                    string logFileName = settings.BuildDestinationFileName(
                        settings.LogDirectory,
                        RtfInterpreterListenerFileLogger.DefaultLogFileExtension);
                    interpreterLogger = new RtfInterpreterListenerFileLogger(logFileName);
                }

                // image converter
                RtfImageConverter imageConverter = null;
                if (settings.SaveImage)
                {
                    RtfImageConvertSettings imageConvertSettings = new RtfImageConvertSettings(imageAdapter);
                    imageConvertSettings.ImagesPath      = settings.DestinationDirectory;
                    imageConvertSettings.BackgroundColor = settings.ImageBackgroundColor;
                    if (settings.ExtendedImageScale)
                    {
                        imageConvertSettings.ScaleExtension = 0.5f;
                    }
                    imageConverter = new RtfImageConverter(imageConvertSettings);
                }

                // rtf parser
                // interpret the rtf structure using the extractors
                rtfDocument = RtfInterpreterTool.BuildDoc(rtfStructure, interpreterLogger, imageConverter);
            }
            catch (Exception e)
            {
                if (interpreterLogger != null)
                {
                    interpreterLogger.Dispose();
                }

                MessageBox(IntPtr.Zero, "Error while interpreting RTF:\n" + e.Message, "Itenso.Rtf2Html", 0x010000);
                ExitCode = ProgramExitCode.InterpretRtf;
                return(null);
            }

            return(rtfDocument);
        }         // InterpretRtf
        }         // InterpretRtf

        // ----------------------------------------------------------------------
        private string ConvertHmtl(IRtfDocument rtfDocument, IRtfVisualImageAdapter imageAdapter)
        {
            string html;

            try
            {
                RtfHtmlConvertSettings htmlConvertSettings = new RtfHtmlConvertSettings(imageAdapter);
                if (settings.CharacterSet != null)
                {
                    htmlConvertSettings.CharacterSet = settings.CharacterSet;
                }
                htmlConvertSettings.Title                = settings.SourceFileNameWithoutExtension;
                htmlConvertSettings.ImagesPath           = settings.ImagesPath;
                htmlConvertSettings.IsShowHiddenText     = settings.ShowHiddenText;
                htmlConvertSettings.UseNonBreakingSpaces = settings.UseNonBreakingSpaces;
                if (settings.ConvertScope != RtfHtmlConvertScope.None)
                {
                    htmlConvertSettings.ConvertScope = settings.ConvertScope;
                }
                if (!string.IsNullOrEmpty(settings.StyleSheets))
                {
                    string[] styleSheets = settings.StyleSheets.Split(',');
                    htmlConvertSettings.StyleSheetLinks.AddRange(styleSheets);
                }
                htmlConvertSettings.ConvertVisualHyperlinks = settings.ConvertVisualHyperlinks;
                if (!string.IsNullOrEmpty(settings.VisualHyperlinkPattern))
                {
                    htmlConvertSettings.VisualHyperlinkPattern = settings.VisualHyperlinkPattern;
                }
                htmlConvertSettings.SpecialCharsRepresentation = settings.SpecialCharsRepresentation;

                RtfHtmlConverter htmlConverter = new RtfHtmlConverter(rtfDocument, htmlConvertSettings);
                if (!settings.UseInlineStyles)
                {
                    htmlConverter.StyleConverter = new RtfEmptyHtmlStyleConverter();
                }
                html = htmlConverter.Convert();
            }
            catch (Exception e)
            {
                Console.WriteLine("error while converting to html: " + e.Message);
                ExitCode = ProgramExitCode.ConvertHtml;
                return(null);
            }

            return(html);
        }         // ConvertHmtl
Beispiel #13
0
        }         // Execute

        // ----------------------------------------------------------------------
        private bool ValidateProgramSettings()
        {
            if (settings.IsHelpMode)
            {
                ShowHelp();
                return(false);
            }

            if (!settings.IsValid)
            {
                ShowHelp();
                ExitCode = ProgramExitCode.InvalidSettings;
                return(false);
            }

            return(true);
        }         // ValidateProgramSettings
Beispiel #14
0
        }         // ValidateProgramSettings

        // ----------------------------------------------------------------------
        private IRtfGroup ParseRtf()
        {
            IRtfGroup rtfStructure;
            RtfParserListenerFileLogger parserLogger = null;

            try
            {
                // logger
                if (settings.LogParser)
                {
                    string logFileName = settings.BuildDestinationFileName(
                        settings.LogDirectory,
                        RtfParserListenerFileLogger.DefaultLogFileExtension);
                    parserLogger = new RtfParserListenerFileLogger(logFileName);
                }

                // rtf parser
                // open readonly - in case of dominant locks...
                using (FileStream stream = File.Open(settings.SourceFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                {
                    // parse the rtf structure
                    RtfParserListenerStructureBuilder structureBuilder = new RtfParserListenerStructureBuilder();
                    RtfParser parser = new RtfParser(structureBuilder);
                    parser.IgnoreContentAfterRootGroup = true;                     // support WordPad documents
                    if (parserLogger != null)
                    {
                        parser.AddParserListener(parserLogger);
                    }
                    parser.Parse(new RtfSource(stream));
                    rtfStructure = structureBuilder.StructureRoot;
                }
            }
            catch (Exception e)
            {
                if (parserLogger != null)
                {
                    parserLogger.Dispose();
                }

                Console.WriteLine("error while parsing rtf: " + e.Message);
                ExitCode = ProgramExitCode.ParseRtf;
                return(null);
            }

            return(rtfStructure);
        }         // ParseRtf
Beispiel #15
0
        static int Main(string[] args)
        {
            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }

            ProgramExitCode exitCode = ProgramExitCode.Ok;

            Microsoft.Extensions.Logging.ILogger logger = null;

            if (args == null)
            {
                throw new ArgumentNullException(nameof(args), "Provide at least one command.");
            }

            try
            {
                switch (args[0])
                {
                case "upgrade":
                    logger = EnsureLoggerExists(logger);
                    UpgradeCommand upgradeCommand = new UpgradeCommand(logger);
                    upgradeCommand.Execute(args);
                    break;

                case "list":
                    ListCommand listCommand = new ListCommand(NullLogger.Instance);
                    listCommand.Execute(args);
                    break;

                default:
                    throw new ArgumentOutOfRangeException("command", args[0], "Unknown command");
                }
            }
            catch (Exception e)
            {
                logger = EnsureLoggerExists(logger);
                logger.LogError(e.ToString());
                exitCode = ProgramExitCode.GeneralError;
            }

            return((int)exitCode);
        }
Beispiel #16
0
        } // EnsureDestinationDirectory

        // ----------------------------------------------------------------------
        private IRtfDocument InterpretRtf(IRtfGroup rtfStructure, IRtfVisualImageAdapter imageAdapter)
        {
            IRtfDocument rtfDocument;

            try
            {
                // image converter
                RtfImageConverter imageConverter = null;
                if (settings.SaveImage)
                {
                    RtfImageConvertSettings imageConvertSettings = new RtfImageConvertSettings(imageAdapter);
                    imageConvertSettings.ImagesPath = settings.DestinationDirectory;
                    if (settings.ImageBackgroundColor.HasValue)
                    {
                        imageConvertSettings.BackgroundColor = new Model.RtfColor(settings.ImageBackgroundColor.Value.R
                                                                                  , settings.ImageBackgroundColor.Value.G, settings.ImageBackgroundColor.Value.B);
                    }
                    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
                rtfDocument = RtfInterpreterTool.BuildDoc(rtfStructure, interpreterSettings, imageConverter);
            }
            catch (Exception e)
            {
                Console.WriteLine("error while interpreting rtf: " + e.Message);
                ExitCode = ProgramExitCode.InterpretRtf;
                return(null);
            }

            return(rtfDocument);
        } // InterpretRtf
Beispiel #17
0
        }         // ParseRtf

        // ----------------------------------------------------------------------
        private void EnsureDestinationDirectory()
        {
            if (!this.settings.HasDestinationOutput)
            {
                return;
            }

            try
            {
                if (!Directory.Exists(this.settings.DestinationDirectory))
                {
                    Directory.CreateDirectory(this.settings.DestinationDirectory);
                }
            }
            catch (Exception /*e*/)
            {
                //Console.WriteLine( "error while creating destination directory: " + e.Message );
                ExitCode = ProgramExitCode.DestinationDirectory;
                return;
            }
        }         // EnsureDestinationDirectory
Beispiel #18
0
        }         // ParseRtf

        // ----------------------------------------------------------------------
        private void EnsureDestinationDirectory()
        {
            if (!settings.HasDestinationOutput)
            {
                return;
            }

            try
            {
                if (!Directory.Exists(settings.DestinationDirectory))
                {
                    Directory.CreateDirectory(settings.DestinationDirectory);
                }
            }
            catch (Exception e)
            {
                MessageBox(IntPtr.Zero, "Error while creating destination directory:\n" + e.Message, "Itenso.Rtf2Html", 0x010000);
                ExitCode = ProgramExitCode.DestinationDirectory;
                return;
            }
        }         // EnsureDestinationDirectory
Beispiel #19
0
        // ----------------------------------------------------------------------
        private string SaveText( string text )
        {
            if ( !settings.SaveText )
            {
                return null;
            }

            string fileName = settings.BuildDestinationFileName( null, RtfTextConverter.DefaultTextFileExtension );
            try
            {
                using ( TextWriter writer = new StreamWriter( fileName, false, settings.Encoding ) )
                {
                    writer.Write( text );
                }
            }
            catch ( Exception e )
            {
                Console.WriteLine( "error while saving raw text: " + e.Message );
                ExitCode = ProgramExitCode.SaveText;
                return null;
            }

            return fileName;
        }
Beispiel #20
0
        // ----------------------------------------------------------------------
        private bool ValidateProgramSettings()
        {
            if ( settings.IsHelpMode )
            {
                ShowHelp();
                return false;
            }

            if ( !settings.IsValid )
            {
                ShowHelp();
                ExitCode = ProgramExitCode.InvalidSettings;
                return false;
            }

            return true;
        }
Beispiel #21
0
        // ----------------------------------------------------------------------
        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;
                    if ( settings.ExtendedImageScale )
                    {
                        imageConvertSettings.ScaleExtension = 0.5f;
                    }
                    imageConverter = new RtfImageConverter( imageConvertSettings );
                }

                // rtf parser
                // 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;
        }
Beispiel #22
0
        // ----------------------------------------------------------------------
        private IRtfGroup ParseRtf()
        {
            IRtfGroup rtfStructure;
            RtfParserListenerFileLogger parserLogger = null;
            try
            {
                // logger
                if ( settings.LogParser )
                {
                    string logFileName = settings.BuildDestinationFileName(
                        settings.LogDirectory,
                        RtfParserListenerFileLogger.DefaultLogFileExtension );
                    parserLogger = new RtfParserListenerFileLogger( logFileName );
                }

                // rtf parser
                // open readonly - in case of dominant locks...
                using ( FileStream stream = File.Open( settings.SourceFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite ) )
                {
                    // parse the rtf structure
                    RtfParserListenerStructureBuilder structureBuilder = new RtfParserListenerStructureBuilder();
                    RtfParser parser = new RtfParser( structureBuilder );
                    parser.IgnoreContentAfterRootGroup = true; // support WordPad documents
                    if ( parserLogger != null )
                    {
                        parser.AddParserListener( parserLogger );
                    }
                    parser.Parse( new RtfSource( stream ) );
                    rtfStructure = structureBuilder.StructureRoot;
                }
            }
            catch ( Exception e )
            {
                if ( parserLogger != null )
                {
                    parserLogger.Dispose();
                }

                Console.WriteLine( "error while parsing rtf: " + e.Message );
                ExitCode = ProgramExitCode.ParseRtf;
                return null;
            }

            return rtfStructure;
        }
        // ----------------------------------------------------------------------
        private string ConvertHmtl( IRtfDocument rtfDocument, IRtfVisualImageAdapter imageAdapter )
        {
            string html;

            try
            {
                RtfHtmlConvertSettings htmlConvertSettings = new RtfHtmlConvertSettings( imageAdapter );
                if ( settings.CharacterSet != null )
                {
                    htmlConvertSettings.CharacterSet = settings.CharacterSet;
                }
                htmlConvertSettings.Title = settings.SourceFileNameWithoutExtension;
                htmlConvertSettings.ImagesPath = settings.ImagesPath;
                htmlConvertSettings.IsShowHiddenText = settings.ShowHiddenText;
                htmlConvertSettings.UseNonBreakingSpaces = settings.UseNonBreakingSpaces;
                if ( settings.ConvertScope != RtfHtmlConvertScope.None )
                {
                    htmlConvertSettings.ConvertScope = settings.ConvertScope;
                }
                if ( !string.IsNullOrEmpty( settings.StyleSheets ) )
                {
                    string[] styleSheets = settings.StyleSheets.Split( ',' );
                    htmlConvertSettings.StyleSheetLinks.AddRange( styleSheets );
                }
                htmlConvertSettings.ConvertVisualHyperlinks = settings.ConvertVisualHyperlinks;
                if ( !string.IsNullOrEmpty( settings.VisualHyperlinkPattern ) )
                {
                    htmlConvertSettings.VisualHyperlinkPattern = settings.VisualHyperlinkPattern;
                }
                htmlConvertSettings.SpecialCharsRepresentation = settings.SpecialCharsRepresentation;

                RtfHtmlConverter htmlConverter = new RtfHtmlConverter( rtfDocument, htmlConvertSettings );
                html = htmlConverter.Convert();
            }
            catch ( Exception e )
            {
                Console.WriteLine( "error while converting to html: " + e.Message );
                ExitCode = ProgramExitCode.ConvertHtml;
                return null;
            }

            return html;
        }
Beispiel #24
0
        // ----------------------------------------------------------------------
        private void EnsureDestinationDirectory()
        {
            if ( !settings.HasDestinationOutput )
            {
                return;
            }

            try
            {
                if ( !Directory.Exists( settings.DestinationDirectory ) )
                {
                    Directory.CreateDirectory( settings.DestinationDirectory );
                }
            }
            catch ( Exception e )
            {
                Console.WriteLine( "error while creating destination directory: " + e.Message );
                ExitCode = ProgramExitCode.DestinationDirectory;
            }
        }
        // ----------------------------------------------------------------------
        private IRtfDocument InterpretRtf( IRtfGroup rtfStructure, IRtfVisualImageAdapter imageAdapter )
        {
            IRtfDocument rtfDocument;
            RtfInterpreterListenerFileLogger interpreterLogger = null;
            try
            {
                // logger
                if ( settings.LogInterpreter )
                {
                    string logFileName = settings.BuildDestinationFileName(
                        settings.LogDirectory,
                        RtfInterpreterListenerFileLogger.DefaultLogFileExtension );
                    interpreterLogger = new RtfInterpreterListenerFileLogger( logFileName );
                }

                // image converter
                RtfImageConverter imageConverter = null;
                if ( settings.SaveImage )
                {
                    RtfImageConvertSettings imageConvertSettings = new RtfImageConvertSettings( imageAdapter );
                    imageConvertSettings.ImagesPath = settings.DestinationDirectory;
                    imageConvertSettings.BackgroundColor = settings.ImageBackgroundColor;
                    if ( settings.ExtendedImageScale )
                    {
                        imageConvertSettings.ScaleExtension = 0.5f;
                    }
                    imageConverter = new RtfImageConverter( imageConvertSettings );
                }

                // rtf parser
                // interpret the rtf structure using the extractors
                rtfDocument = RtfInterpreterTool.BuildDoc( rtfStructure, interpreterLogger, imageConverter );

            }
            catch ( Exception e )
            {
                if ( interpreterLogger != null )
                {
                    interpreterLogger.Dispose();
                }

                Console.WriteLine( "error while interpreting rtf: " + e.Message );
                ExitCode = ProgramExitCode.InterpretRtf;
                return null;
            }

            return rtfDocument;
        }
Beispiel #26
0
        }         // 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
Beispiel #27
0
 public override void OnExit(ProgramExitCode code)
 {
 }
Beispiel #28
0
        // ----------------------------------------------------------------------
        private void ConvertXml( IRtfDocument rtfDocument )
        {
            try
            {
                XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
                xmlWriterSettings.Indent = true;
                xmlWriterSettings.IndentChars = ( "  " );
                xmlWriterSettings.Encoding = settings.Encoding;

                string fileName = settings.BuildDestinationFileName( null, RtfXmlConverter.DefaultXmlFileExtension );
                using ( XmlWriter writer = XmlWriter.Create( fileName, xmlWriterSettings ) )
                {
                    RtfXmlConvertSettings xmlConvertSettings = new RtfXmlConvertSettings();
                    xmlConvertSettings.Prefix = settings.XmlPrefix;
                    xmlConvertSettings.Ns = settings.XmlNamespace;
                    xmlConvertSettings.IsShowHiddenText = settings.ShowHiddenText;
                    RtfXmlConverter xmlConverter = new RtfXmlConverter( rtfDocument, writer, xmlConvertSettings );
                    xmlConverter.Convert();
                    writer.Flush();
                }
            }
            catch ( Exception e )
            {
                Console.WriteLine( "error while converting to xml: " + e.Message );
                ExitCode = ProgramExitCode.ConvertXml;
            }
        }
Beispiel #29
0
        // ----------------------------------------------------------------------
        private IRtfDocument InterpretRtf( IRtfGroup rtfStructure )
        {
            IRtfDocument rtfDocument;
            RtfInterpreterListenerFileLogger interpreterLogger = null;
            try
            {
                // logger
                if ( settings.LogInterpreter )
                {
                    string logFileName = settings.BuildDestinationFileName(
                        settings.LogDirectory,
                        RtfInterpreterListenerFileLogger.DefaultLogFileExtension );
                    interpreterLogger = new RtfInterpreterListenerFileLogger( logFileName );
                }

                // rtf parser
                // interpret the rtf structure using the extractors
                rtfDocument = RtfInterpreterTool.BuildDoc( rtfStructure, interpreterLogger );
            }
            catch ( Exception e )
            {
                if ( interpreterLogger != null )
                {
                    interpreterLogger.Dispose();
                }

                Console.WriteLine( "error while interpreting rtf: " + e.Message );
                ExitCode = ProgramExitCode.InterpretRtf;
                return null;
            }

            return rtfDocument;
        }