예제 #1
0
파일: RtfParser.cs 프로젝트: clgray/Locator
        private void QuestionProsessAsync(object param)
        {
            object[]         paramArr   = (object[])param;
            string           rtf        = (string)paramArr[0];
            string           rtfAnswers = (string)paramArr[1];
            ManualResetEvent mre        = (ManualResetEvent)paramArr[2];
            int       questionIndex     = (int)paramArr[3] - 2;
            HtmlStore quest             = new HtmlStore();

            quest.QuestIndex = questionIndex;
            lock (_htmlStoreList)
                _htmlStoreList.Add(quest);
            Rtf2HTML.GetHtml(rtf, ref quest);
            AnsversProsess(rtfAnswers, quest);
            quest.QuestionType = QuestionTypeHelper.GetQuestionType(quest);
            mre.Set();
        }
예제 #2
0
        private List <HtmlStore> ParseDocx(string fileName)
        {
            using (_package = Package.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                PackageRelationship rel     = _package.GetRelationships().Where(c => c.RelationshipType == "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument").First();
                PackagePart         docPart = _package.GetPart(PackUriHelper.ResolvePartUri(new Uri("/", UriKind.Relative), rel.TargetUri));
                _docRels = docPart.GetRelationships();

                XDocument doc = null;
                using (Stream st = docPart.GetStream(FileMode.Open, FileAccess.Read))
                {
                    StreamReader sr = new StreamReader(st);
                    doc = XDocument.Load(sr, LoadOptions.None);
                    ParseDocument(doc);
                }
                if (!_isAnswerMode && _sb.Length > 0)
                {
                    string addStr = ReplaceWrongChars(_sb.ToString());
                    if (addStr.Length > 0)
                    {
                        AddQuestion(_sb.ToString());
                    }
                }
                else if (_isAnswerMode)
                {
                    AddAnswer(_sb.ToString());
                }
            }
            int index = 1;

            foreach (var quest in _questions)
            {
                quest.Html         = ReplaceWrongChars(ReplaceWrongChars(quest.Html.Replace(Environment.NewLine, "<br/>")));
                quest.QuestionType = QuestionTypeHelper.GetQuestionType(quest);
                quest.QuestIndex   = index;
                index++;
                foreach (var ans in quest.SubItems)
                {
                    ans.Html = ReplaceWrongChars(ReplaceWrongChars(ans.Html.Replace(Environment.NewLine, "<br/>")));
                }
            }
            _package.Close();
            return(_questions);
        }