Example #1
0
        }         // ToTextButtonClick

        // ----------------------------------------------------------------------
        private void ToXmlButtonClick(object sender, RoutedEventArgs e)
        {
            try
            {
                TextRange conversionText = ConversionText;
                using (MemoryStream stream = new MemoryStream())
                {
                    conversionText.Save(stream, DataFormats.Rtf);
                    stream.Seek(0, SeekOrigin.Begin);
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        IRtfDocument rtfDocument = RtfInterpreterTool.BuildDoc(reader);

                        XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
                        xmlWriterSettings.Indent      = true;
                        xmlWriterSettings.IndentChars = ("  ");
                        StringBuilder sb = new StringBuilder();
                        using (XmlWriter writer = XmlWriter.Create(sb, xmlWriterSettings))
                        {
                            RtfXmlConverter xmlConverter = new RtfXmlConverter(rtfDocument, writer);
                            xmlConverter.Convert();
                            writer.Flush();
                            textBox.Text = sb.ToString();
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                MessageBox.Show(this, "Error " + exception.Message, Title, MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }         // ToXmlButtonClick
Example #2
0
        }         // 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
Example #3
0
        public void ImageTest()
        {
            const RtfParserListenerLogger parserLogger = null;
            //parserLogger = new RtfParserListenerLogger();
            IRtfGroup rtfStructure =
                RtfParserTool.Parse(GetTestResource("RtfInterpreterTest_4.rtf"), parserLogger);

            Assert.IsNotNull(rtfStructure);

            const RtfInterpreterListenerLogger interpreterLogger = null;
            //interpreterLogger = new RtfInterpreterListenerLogger();

            IRtfDocument rtfDoc = RtfInterpreterTool.BuildDoc(rtfStructure, interpreterLogger);

            Assert.IsNotNull(rtfDoc);
            IRtfVisualCollection rtfVisuals = rtfDoc.VisualContent;

            Assert.AreEqual(RtfVisualKind.Image, rtfVisuals[4].Kind);
            IRtfVisualImage img = (IRtfVisualImage)rtfVisuals[4];

            Assert.AreEqual(RtfVisualImageFormat.Jpg, img.Format);
            Assert.AreEqual(100, img.Width);
            Assert.AreEqual(142, img.Height);
            Assert.AreEqual(720, img.DesiredWidth);
            Assert.AreEqual(1020, img.DesiredHeight);
        }         // ImageTest
Example #4
0
        }         // RtfDumpElement

        // ----------------------------------------------------------------------
        static void RtfSympleInterpreter()
        {
            RtfInterpreterListenerFileLogger logger = new RtfInterpreterListenerFileLogger(@"c:\temp\RtfInterpreter.log");
            IRtfDocument document = RtfInterpreterTool.BuildDoc(@"{\rtf1foobar}", logger);

            RtfWriteDocument(document);
        }         // RtfSympleInterpreter
Example #5
0
        public void ImageFormatDecodingTest()
        {
            const RtfParserListenerLogger parserLogger = null;
            //parserLogger = new RtfParserListenerLogger();

            const RtfInterpreterListenerLogger interpreterLogger = null;

            //interpreterLogger = new RtfInterpreterListenerLogger();

// ReSharper disable RedundantExplicitArrayCreation
            int[] imageResources = new int[] { 4, 5, 6, 7, 8, 19 };
// ReSharper restore RedundantExplicitArrayCreation
            for (int i = 0; i < imageResources.Length; i++)
            {
                string    testCaseName = BuildTestResourceName("", imageResources[i], false, "rtf");
                IRtfGroup rtfStructure =
                    RtfParserTool.Parse(GetTestResource(testCaseName), parserLogger);
                IRtfDocument rtfDoc = RtfInterpreterTool.BuildDoc(rtfStructure, interpreterLogger);
                Assert.IsNotNull(rtfDoc);
                bool imageFound = false;
                foreach (IRtfVisual visual in rtfDoc.VisualContent)
                {
                    if (visual.Kind == RtfVisualKind.Image)
                    {
                        IRtfVisualImage img = (IRtfVisualImage)visual;
                        Assert.IsNotNull(img.ImageForDrawing);
                        imageFound = true;
                        //Console.WriteLine( "image: " + img.ImageForDrawing );
                    }
                }
                Assert.IsTrue(imageFound, "no image found in test case " + testCaseName);
            }
        }         // ImageFormatDecodingTest
Example #6
0
        private static string GetHtmlFromRTF(string rtfSelection)
        {
            IRtfDocument     rtfDocument   = RtfInterpreterTool.BuildDoc(rtfSelection);
            RtfHtmlConverter htmlConverter = new RtfHtmlConverter(rtfDocument);

            return(htmlConverter.Convert());
        }
Example #7
0
        public void TextAlignmentTest()
        {
            const RtfParserListenerLogger parserLogger = null;
            //parserLogger = new RtfParserListenerLogger();
            IRtfGroup rtfStructure =
                RtfParserTool.Parse(GetTestResource("RtfInterpreterTest_3.rtf"), parserLogger);

            Assert.IsNotNull(rtfStructure);

            const RtfInterpreterListenerLogger interpreterLogger = null;
            //interpreterLogger = new RtfInterpreterListenerLogger();

            IRtfDocument rtfDoc = RtfInterpreterTool.BuildDoc(rtfStructure, interpreterLogger);

            Assert.IsNotNull(rtfDoc);
            IRtfVisualCollection rtfVisuals = rtfDoc.VisualContent;

            Assert.AreEqual(8, rtfVisuals.Count);
            Assert.AreEqual(RtfVisualKind.Text, rtfVisuals[0].Kind);
            Assert.AreEqual("left aligned", ((IRtfVisualText)rtfVisuals[0]).Text);
            Assert.AreEqual(RtfTextAlignment.Left, ((IRtfVisualText)rtfVisuals[0]).Format.Alignment);
            Assert.AreEqual(RtfVisualKind.Text, rtfVisuals[2].Kind);
            Assert.AreEqual("centered", ((IRtfVisualText)rtfVisuals[2]).Text);
            Assert.AreEqual(RtfTextAlignment.Center, ((IRtfVisualText)rtfVisuals[2]).Format.Alignment);
            Assert.AreEqual(RtfVisualKind.Text, rtfVisuals[4].Kind);
            Assert.AreEqual("right aligned", ((IRtfVisualText)rtfVisuals[4]).Text);
            Assert.AreEqual(RtfTextAlignment.Right, ((IRtfVisualText)rtfVisuals[4]).Format.Alignment);
            Assert.AreEqual(RtfVisualKind.Text, rtfVisuals[6].Kind);
            Assert.AreEqual("block aligned", ((IRtfVisualText)rtfVisuals[6]).Text);
            Assert.AreEqual(RtfTextAlignment.Justify, ((IRtfVisualText)rtfVisuals[6]).Format.Alignment);
        }         // TextAlignmentTest
Example #8
0
        public static string RtfToHtml(this string str, RtfHtmlConvertSettings htmlConvertSettings, bool throwOnError = false, IRtfParserListener listener = null, string destinationDirectory = null, RtfVisualImageAdapter imageAdapter = null, string imageAdapterLogFile = null, RtfImageConvertSettings imageConvertSettings = null)
        {
            IRtfGroup    rtfStructure;
            IRtfDocument rtfDocument = null;

            try
            {
                using (var stream = str.ToStream())
                {
                    // parse the rtf structure
                    var           structureBuilder = new RtfParserListenerStructureBuilder();
                    var           parser           = new RtfParser(structureBuilder);
                    DirectoryInfo destination;

                    if (destinationDirectory != null)
                    {
                        destination = new DirectoryInfo(destinationDirectory);
                    }

                    parser.IgnoreContentAfterRootGroup = true; // support WordPad documents

                    if (listener != null)
                    {
                        parser.AddParserListener(listener);
                    }

                    parser.Parse(new RtfSource(stream));
                    rtfStructure = structureBuilder.StructureRoot;

                    ThrowOnUnexpectedExitCode();

                    rtfDocument = InterpretRtf(rtfStructure, imageAdapter, imageAdapterLogFile, imageConvertSettings, throwOnError);

                    if (throwOnError)
                    {
                        ThrowOnUnexpectedExitCode();
                    }

                    // convert to hmtl

                    string html = ConvertHmtl(rtfDocument, imageAdapter, htmlConvertSettings, throwOnError);

                    if (throwOnError)
                    {
                        ThrowOnUnexpectedExitCode();
                    }

                    return(html);
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine("RtfToHtml parser failed with error: {0}", e.Message);
            }

            return(null);
        }
Example #9
0
        private static string ConvertRtfToHtml(string rtfText)
        {
            IRtfDocument           rtfDocument = RtfInterpreterTool.BuildDoc(rtfText);
            RtfHtmlConvertSettings settings    = new RtfHtmlConvertSettings();

            settings.ConvertScope = RtfHtmlConvertScope.Content;

            RtfHtmlConverter htmlConverter = new RtfHtmlConverter(rtfDocument, settings);

            return(htmlConverter.Convert());
        } // ConvertRtfToHtml
Example #10
0
        private IRtfDocument InterpretRtf(IRtfGroup rtfStructure, RtfVisualImageAdapter imageAdapter)
        {
            IRtfDocument            rtfDocument          = null;
            RtfImageConverter       imageConverter       = null;
            RtfImageConvertSettings imageConvertSettings = new RtfImageConvertSettings(imageAdapter);

            imageConvertSettings.ImagesPath      = ImagePath;
            imageConvertSettings.BackgroundColor = null;
            imageConverter = new RtfImageConverter(imageConvertSettings);
            rtfDocument    = RtfInterpreterTool.BuildDoc(rtfStructure, null, imageConverter);
            return(rtfDocument);
        }
Example #11
0
        }         // RtfSympleInterpreter

        // ----------------------------------------------------------------------
        static void RtfWriteDocument(IRtfDocument document)
        {
            Console.WriteLine("RTF Version: " + document.RtfVersion.ToString());

            // document info
            Console.WriteLine("Title: " + document.DocumentInfo.Title);
            Console.WriteLine("Subject: " + document.DocumentInfo.Subject);
            Console.WriteLine("Author: " + document.DocumentInfo.Author);
            // ...

            // fonts
            foreach (IRtfFont font in document.FontTable)
            {
                //	Console.WriteLine( "Font: " + font.Name );
            }

            // colors
            foreach (IRtfColor color in document.ColorTable)
            {
                //	Console.WriteLine( "Color: " + color.AsDrawingColor.ToString() );
            }

            // user properties
            foreach (IRtfDocumentProperty documentProperty in document.UserProperties)
            {
                Console.WriteLine("User property: " + documentProperty.Name);
            }

            // visuals
            foreach (IRtfVisual visual in document.VisualContent)
            {
                switch (visual.Kind)
                {
                case RtfVisualKind.Text:
                    Console.WriteLine("Text: " + ((IRtfVisualText)visual).Text);
                    break;

                case RtfVisualKind.Break:
                    Console.WriteLine("Tag: " + ((IRtfVisualBreak)visual).BreakKind.ToString());
                    break;

                case RtfVisualKind.Special:
                    Console.WriteLine("Text: " + ((IRtfVisualSpecialChar)visual).CharKind.ToString());
                    break;

                case RtfVisualKind.Image:
                    IRtfVisualImage image = (IRtfVisualImage)visual;
                    Console.WriteLine("Text: " + image.Format.ToString() +
                                      " " + image.Width.ToString() + "x" + image.Height.ToString());
                    break;
                }
            }
        } // RtfWriteElement
Example #12
0
        private string ConvertHmtl(IRtfDocument rtfDocument, RtfVisualImageAdapter imageAdapter)
        {
            RtfHtmlConvertSettings htmlConvertSettings = new RtfHtmlConvertSettings(imageAdapter);

            htmlConvertSettings.Title                   = "Doc Title " + DateTime.Now.ToString("dd/MM/yyyy");
            htmlConvertSettings.ImagesPath              = ImagePath;
            htmlConvertSettings.IsShowHiddenText        = IsShowHiddenText;
            htmlConvertSettings.ConvertVisualHyperlinks = ConvertVisualHyperlinks;
            RtfHtmlConverter htmlConverter = new RtfHtmlConverter(rtfDocument, htmlConvertSettings);

            return(htmlConverter.Convert());
        }
Example #13
0
        }         // ToXmlButtonClick

        // ----------------------------------------------------------------------
        private void ToHtmlButtonClick(object sender, EventArgs e)
        {
            try
            {
                IRtfDocument     rtfDocument   = RtfInterpreterTool.BuildDoc(ConversionText);
                RtfHtmlConverter htmlConverter = new RtfHtmlConverter(rtfDocument);
                textBox.Text = htmlConverter.Convert();
            }
            catch (Exception exception)
            {
                MessageBox.Show(this, "Error " + exception.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        } // ToHtmlButtonClick
Example #14
0
        /// <summary>
        /// Do the actual conversion by using a RichTextBox
        /// </summary>
        private void Convert()
        {
            if (string.IsNullOrEmpty(_rtf))
            {
                _convertedRtf = string.Empty;
                return;
            }

            IRtfDocument     rtfDocument = RtfInterpreterTool.BuildDoc(_rtf);
            RtfHtmlConverter converter   = new RtfHtmlConverter(rtfDocument);

            _convertedRtf = converter.Convert();
        }
Example #15
0
        }         // RtfHtmlConverter

        // ----------------------------------------------------------------------
        public RtfHtmlConverter(IRtfDocument rtfDocument, RtfHtmlConvertSettings settings)
        {
            if (rtfDocument == null)
            {
                throw new ArgumentNullException("rtfDocument");
            }
            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }

            this.rtfDocument = rtfDocument;
            this.settings    = settings;
        }         // RtfHtmlConverter
Example #16
0
    private string GetBibDescr(string s)
    {
        IRtfDocument rtfDocument = RtfInterpreterTool.BuildDoc(s);
        string       ret         = "";

        foreach (IRtfVisual vt in rtfDocument.VisualContent)
        {
            if (vt.Kind == RtfVisualKind.Text)
            {
                ret += ((IRtfVisualText)vt).Text;
            }
        }
        return(ret);
    }
Example #17
0
        public string GetHTML(string rtfString)
        {
            ReportProgress(33);
            IRtfGroup             rtfStructure = ParseRtf(rtfString);
            RtfVisualImageAdapter imageAdapter = new RtfVisualImageAdapter(
                ImageFileNamePattern,
                ImageFormat.Jpeg);

            ReportProgress(33);
            IRtfDocument rtfDocument = InterpretRtf(rtfStructure, imageAdapter);

            ReportProgress(33);
            return(ConvertHmtl(rtfDocument, imageAdapter));
        }
        // ----------------------------------------------------------------------
        static void RtfWriteDocument( IRtfDocument document )
        {
            Console.WriteLine( "RTF Version: " + document.RtfVersion.ToString() );

            // document info
            Console.WriteLine( "Title: " + document.DocumentInfo.Title );
            Console.WriteLine( "Subject: " + document.DocumentInfo.Subject );
            Console.WriteLine( "Author: " + document.DocumentInfo.Author );
            // ...

            // fonts
            foreach ( IRtfFont font in document.FontTable )
            {
            //	Console.WriteLine( "Font: " + font.Name );
            }

            // colors
            foreach ( IRtfColor color in document.ColorTable )
            {
            //	Console.WriteLine( "Color: " + color.AsDrawingColor.ToString() );
            }

            // user properties
            foreach ( IRtfDocumentProperty documentProperty in document.UserProperties )
            {
                Console.WriteLine( "User property: " + documentProperty.Name );
            }

            // visuals
            foreach ( IRtfVisual visual in document.VisualContent )
            {
                switch ( visual.Kind )
                {
                    case RtfVisualKind.Text:
                        Console.WriteLine( "Text: " + ( (IRtfVisualText)visual ).Text );
                        break;
                    case RtfVisualKind.Break:
                        Console.WriteLine( "Tag: " + ( (IRtfVisualBreak)visual ).BreakKind.ToString() );
                        break;
                    case RtfVisualKind.Special:
                        Console.WriteLine( "Text: " + ( (IRtfVisualSpecialChar)visual ).CharKind.ToString() );
                        break;
                    case RtfVisualKind.Image:
                        IRtfVisualImage image = (IRtfVisualImage)visual;
                        Console.WriteLine( "Text: " + image.Format.ToString() +
                         " " + image.Width.ToString() + "x" + image.Height.ToString() );
                        break;
                }
            }
        }
Example #19
0
        }         // RtfHtmlConverter

        // ----------------------------------------------------------------------
        public RtfHtmlConverter(IRtfDocument rtfDocument, RtfHtmlConvertSettings settings)
        {
            if (rtfDocument == null)
            {
                throw new ArgumentNullException("rtfDocument");
            }
            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }

            this.rtfDocument  = rtfDocument;
            this.settings     = settings;
            specialCharacters = new RtfHtmlSpecialCharCollection(settings.SpecialCharsRepresentation);
        }         // RtfHtmlConverter
        } // RtfHtmlConverter

        public RtfHtmlConverter(IRtfDocument rtfDocument, RtfHtmlConvertSettings settings)
        {
            if (rtfDocument == null)
            {
                throw new ArgumentNullException(nameof(rtfDocument));
            }
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            RtfDocument       = rtfDocument;
            Settings          = settings;
            SpecialCharacters = new RtfHtmlSpecialCharCollection(settings.SpecialCharsRepresentation);
        } // RtfHtmlConverter
        // ----------------------------------------------------------------------
        public RtfHtmlConverter( IRtfDocument rtfDocument, RtfHtmlConvertSettings settings )
        {
            if ( rtfDocument == null )
            {
                throw new ArgumentNullException( "rtfDocument" );
            }
            if ( settings == null )
            {
                throw new ArgumentNullException( "settings" );
            }

            this.rtfDocument = rtfDocument;
            this.settings = settings;
            specialCharacters = new RtfHtmlSpecialCharCollection( settings.SpecialCharsRepresentation );
        }
        }         // 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
Example #23
0
        }         // RtfXmlConverter

        // ----------------------------------------------------------------------
        public RtfXmlConverter(IRtfDocument rtfDocument, XmlWriter writer, RtfXmlConvertSettings settings)
        {
            if (rtfDocument == null)
            {
                throw new ArgumentNullException("rtfDocument");
            }
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }

            this.rtfDocument = rtfDocument;
            this.writer      = writer;
            this.settings    = settings;
        }         // RtfXmlConverter
Example #24
0
        private static string ConvertHmtl(IRtfDocument rtfDocument, IRtfVisualImageAdapter imageAdapter, RtfHtmlConvertSettings htmlConvertSettings, bool throwOnError = false)
        {
            string html = null;

            try
            {
                var htmlConverter = new RtfHtmlConverter(rtfDocument, htmlConvertSettings);
                html = htmlConverter.Convert();
            }
            catch (Exception e)
            {
                if (throwOnError)
                {
                    ThrowOnUnexpectedExitCode(e);
                }
            }

            return(html);
        }
        // ----------------------------------------------------------------------
        public RtfXmlConverter( IRtfDocument rtfDocument, XmlWriter writer, RtfXmlConvertSettings settings )
        {
            if ( rtfDocument == null )
            {
                throw new ArgumentNullException( "rtfDocument" );
            }
            if ( writer == null )
            {
                throw new ArgumentNullException( "writer" );
            }
            if ( settings == null )
            {
                throw new ArgumentNullException( "settings" );
            }

            this.rtfDocument = rtfDocument;
            this.writer = writer;
            this.settings = settings;
        }
Example #26
0
        }         // ExitCode

        // ----------------------------------------------------------------------
        public void Execute()
        {
            Console.WriteLine(string.Concat(
                                  ApplicationInfo.ShortCaption,
                                  ", ",
                                  ApplicationInfo.Copyright));

            // program settings
            if (ValidateProgramSettings() == false)
            {
                return;
            }

            // parse rtf
            IRtfGroup rtfStructure = ParseRtf();

            if (ExitCode != ProgramExitCode.Successfully)
            {
                return;
            }

            // destination directory
            EnsureDestinationDirectory();
            if (ExitCode != ProgramExitCode.Successfully)
            {
                return;
            }

            // interpret rtf
            IRtfDocument rtfDocument = InterpretRtf(rtfStructure);

            if (ExitCode != ProgramExitCode.Successfully)
            {
                return;
            }

            // convert to xml
            ConvertXml(rtfDocument);

            Console.WriteLine("successfully converted RTF to XML in " + settings.DestinationDirectory);
        }         // Execute
Example #27
0
        public string CovnvertRtftoHtml(string rtf)
        {
            const RtfParserListenerLogger parserLogger = null;

            IRtfGroup rtfStructure = RtfParserTool.Parse(rtf, parserLogger);

            Assert.IsNotNull(rtfStructure);

            const RtfInterpreterListenerLogger interpreterLogger = null;

            RtfTextConverter       textConverter       = new RtfTextConverter();
            IRtfDocument           rtfDocument         = RtfInterpreterTool.BuildDoc(rtfStructure, textConverter, interpreterLogger);
            RtfHtmlConvertSettings htmlConvertSettings = new RtfHtmlConvertSettings();

            htmlConvertSettings.ConvertScope = RtfHtmlConvertScope.Content;
            RtfHtmlConverter htmlConverter = new RtfHtmlConverter(rtfDocument);
            string           plainText     = htmlConverter.Convert();

            plainText = plainText.Replace("@?]e1", "á").Replace("@?]e9", "é").Replace("@?]f3", "ó").Replace("@?]ed", "í").Replace("@?]c1", "á").Replace("@?]f1", "ñ").Replace("@?]fa", "ú"); //aqui reemplazamos para letras con acentos.
            return(plainText);
        }
Example #28
0
        }         // ToXmlButtonClick

        // ----------------------------------------------------------------------
        private void ToHtmlButtonClick(object sender, RoutedEventArgs e)
        {
            try
            {
                TextRange conversionText = ConversionText;
                using (MemoryStream stream = new MemoryStream())
                {
                    conversionText.Save(stream, DataFormats.Rtf);
                    stream.Seek(0, SeekOrigin.Begin);
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        IRtfDocument     rtfDocument   = RtfInterpreterTool.BuildDoc(reader);
                        RtfHtmlConverter htmlConverter = new RtfHtmlConverter(rtfDocument);
                        textBox.Text = htmlConverter.Convert();
                    }
                }
            }
            catch (Exception exception)
            {
                MessageBox.Show(this, "Error " + exception.Message, Title, MessageBoxButton.OK, MessageBoxImage.Error);
            }
        } // ToHtmlButtonClick
Example #29
0
        public void TextAlignmentTestFixed()
        {
            const RtfParserListenerLogger parserLogger = null;
            //parserLogger = new RtfParserListenerLogger();
            IRtfGroup rtfStructure =
                RtfParserTool.Parse(GetTestResource("RtfInterpreterTest_23.rtf"), parserLogger);

            Assert.IsNotNull(rtfStructure);

            const RtfInterpreterListenerLogger interpreterLogger = null;
            //interpreterLogger = new RtfInterpreterListenerLogger();

            IRtfDocument rtfDoc = RtfInterpreterTool.BuildDoc(rtfStructure, interpreterLogger);

            Assert.IsNotNull(rtfDoc);
            IRtfVisualCollection rtfVisuals = rtfDoc.VisualContent;

            Assert.AreEqual(2, rtfVisuals.Count);
            Assert.AreEqual(RtfVisualKind.Text, rtfVisuals[0].Kind);
            Assert.AreEqual("Simple text", ((IRtfVisualText)rtfVisuals[0]).Text);
            Assert.AreEqual(RtfTextAlignment.Right, ((IRtfVisualText)rtfVisuals[0]).Format.Alignment);
        }         // TextAlignmentTestFixed
Example #30
0
        }         // ToTextButtonClick

        // ----------------------------------------------------------------------
        private void ToXmlButtonClick(object sender, EventArgs e)
        {
            try
            {
                IRtfDocument rtfDocument = RtfInterpreterTool.BuildDoc(ConversionText);

                XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
                xmlWriterSettings.Indent      = true;
                xmlWriterSettings.IndentChars = ("  ");
                StringBuilder sb = new StringBuilder();
                using (XmlWriter writer = XmlWriter.Create(sb, xmlWriterSettings))
                {
                    RtfXmlConverter xmlConverter = new RtfXmlConverter(rtfDocument, writer);
                    xmlConverter.Convert();
                    writer.Flush();
                    textBox.Text = sb.ToString();
                }
            }
            catch (Exception exception)
            {
                MessageBox.Show(this, "Error " + exception.Message, Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }         // ToXmlButtonClick
Example #31
0
        }         // ConvertRtf2Txt

        // ----------------------------------------------------------------------
        public string ConvertRtf2Html(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);
            }

            // image converter
            RtfVisualImageAdapter   imageAdapter         = new RtfVisualImageAdapter(ImageFormat.Jpeg);
            RtfImageConvertSettings imageConvertSettings = new RtfImageConvertSettings(imageAdapter);

            imageConvertSettings.ScaleImage = true;             // scale images
            RtfImageConverter imageConverter = new RtfImageConverter(imageConvertSettings);

            // rtf interpreter
            RtfInterpreterSettings interpreterSettings = new RtfInterpreterSettings();
            IRtfDocument           rtfDocument         = RtfInterpreterTool.BuildDoc(rtfStructure, interpreterSettings, interpreterLogger, imageConverter);

            // html converter
            RtfHtmlConvertSettings htmlConvertSettings = new RtfHtmlConvertSettings();

            htmlConvertSettings.ConvertScope = RtfHtmlConvertScope.Content;
            RtfHtmlConverter htmlConverter = new RtfHtmlConverter(rtfDocument);

            return(htmlConverter.Convert());
        }         // ConvertRtf2Html
 // ----------------------------------------------------------------------
 public RtfHtmlConverter( IRtfDocument rtfDocument )
     : this(rtfDocument, new RtfHtmlConvertSettings())
 {
 }
        // ----------------------------------------------------------------------
        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;
        }
 // ----------------------------------------------------------------------
 public RtfXmlConverter( IRtfDocument rtfDocument, XmlWriter writer )
     : this(rtfDocument, writer, new RtfXmlConvertSettings())
 {
 }
Example #35
0
        public void DocumentBuilderTest()
        {
            const RtfParserListenerLogger parserLogger = null;
            //parserLogger = new RtfParserListenerLogger();
            IRtfGroup rtfStructure =
                RtfParserTool.Parse(GetTestResource("RtfInterpreterTest_1.rtf"), parserLogger);

            Assert.IsNotNull(rtfStructure);

            const RtfInterpreterListenerLogger interpreterLogger = null;
            //interpreterLogger = new RtfInterpreterListenerLogger();

            RtfInterpreterListenerDocumentBuilder docBuilder =
                new RtfInterpreterListenerDocumentBuilder();

            RtfInterpreterTool.Interpret(rtfStructure, docBuilder, interpreterLogger);
            IRtfDocument doc = docBuilder.Document;

            Assert.IsNotNull(doc);

            Assert.AreEqual("TX_RTF32 14.0.520.501", doc.Generator);

            Assert.AreEqual(3, doc.FontTable.Count);
            Assert.AreEqual(RtfFontKind.Swiss, doc.FontTable[0].Kind);
            Assert.AreEqual(RtfFontPitch.Variable, doc.FontTable[0].Pitch);
            Assert.AreEqual(0, doc.FontTable[0].CharSet);
            Assert.AreEqual(1252, doc.FontTable[0].CodePage);
            Assert.AreEqual("Arial", doc.FontTable[0].Name);

            Assert.AreEqual(RtfFontKind.Swiss, doc.FontTable[1].Kind);
            Assert.AreEqual(RtfFontPitch.Variable, doc.FontTable[1].Pitch);
            Assert.AreEqual(0, doc.FontTable[01].CharSet);
            Assert.AreEqual(1252, doc.FontTable[1].CodePage);
            Assert.AreEqual("Verdana", doc.FontTable[1].Name);

            Assert.AreEqual(RtfFontKind.Roman, doc.FontTable[2].Kind);
            Assert.AreEqual(RtfFontPitch.Variable, doc.FontTable[2].Pitch);
            Assert.AreEqual(2, doc.FontTable[2].CharSet);
            Assert.AreEqual(42, doc.FontTable[2].CodePage);
            Assert.AreEqual("Symbol", doc.FontTable[2].Name);

            Assert.AreSame(doc.DefaultFont, doc.FontTable[1]);

            Assert.AreEqual(4, doc.ColorTable.Count);
            Assert.AreEqual(RtfColor.Black, doc.ColorTable[0]);
            Assert.AreEqual(RtfColor.Black, doc.ColorTable[1]);
            Assert.AreEqual(RtfColor.White, doc.ColorTable[2]);
            Assert.AreEqual(new RtfColor(10, 20, 30), doc.ColorTable[3]);

            Assert.AreEqual(2, doc.VisualContent.Count);
            Assert.AreEqual(RtfVisualKind.Text, doc.VisualContent[0].Kind);
            Assert.AreEqual("Hellou RTF Wörld", ((IRtfVisualText)doc.VisualContent[0]).Text);
            Assert.AreEqual("Verdana", ((IRtfVisualText)doc.VisualContent[0]).Format.Font.Name);
            Assert.AreEqual(36, ((IRtfVisualText)doc.VisualContent[0]).Format.FontSize);
            Assert.AreEqual(RtfVisualKind.Break, doc.VisualContent[1].Kind);
            Assert.AreEqual(RtfVisualBreakKind.Paragraph, ((IRtfVisualBreak)doc.VisualContent[1]).BreakKind);

            Assert.AreEqual(5, doc.UserProperties.Count);
            Assert.AreEqual("created", doc.UserProperties[0].Name);
            Assert.AreEqual(RtfPropertyKind.Date, doc.UserProperties[0].PropertyKind);
            Assert.AreEqual("2008-05-23", doc.UserProperties[0].StaticValue);
            Assert.IsNull(doc.UserProperties[0].LinkValue);
            Assert.AreEqual("a link", doc.UserProperties[4].LinkValue);

            IRtfDocumentInfo info = doc.DocumentInfo;

            Assert.AreEqual(2, info.Version);
            Assert.AreEqual(3, info.Revision);
            Assert.AreEqual(1, info.NumberOfPages);
            Assert.AreEqual(3, info.NumberOfWords);
            Assert.AreEqual(16, info.NumberOfCharacters);
            Assert.AreEqual(314, info.Id);
            Assert.AreEqual(17, info.EditingTimeInMinutes);
            Assert.AreEqual("Not really important", info.Title);
            Assert.AreEqual("RTF parsing", info.Subject);
            Assert.AreEqual("John Doe", info.Author);
            Assert.AreEqual("John Doe's boss", info.Manager);
            Assert.AreEqual("Itenso GmbH", info.Company);
            Assert.AreEqual("Foo Bar", info.Operator);
            Assert.AreEqual("Development", info.Category);
            Assert.AreEqual("RTF, Parser, Interpreter", info.Keywords);
            Assert.AreEqual("a testing document", info.Comment);
            Assert.AreEqual("with more commentary", info.DocumentComment);
            Assert.AreEqual("http://wwww.nowhere.com/foo/bar", info.HyperLinkbase);
            Assert.AreEqual(Time("2008.05.23-17:55:12"), info.CreationTime);
            Assert.AreEqual(Time("2008.05.23-18:01:00"), info.RevisionTime);
            Assert.AreEqual(Time("2008.05.23-17:59:00"), info.PrintTime);
            Assert.AreEqual(Time("2008.05.23-18:00:00"), info.BackupTime);
        }         // DocumentBuilderTest
Example #36
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;
            }
        }
Example #37
0
 // ----------------------------------------------------------------------
 public RtfXmlConverter(IRtfDocument rtfDocument, XmlWriter writer) :
     this(rtfDocument, writer, new RtfXmlConvertSettings())
 {
 }         // RtfXmlConverter