示例#1
0
        private string GetText(Run run, DqStyleTable dqStyleTable, DqFontScheme fontScheme, DqNumberingTable dqNumberingTable)
        {
            var buffer = new StringBuilder();

            foreach (var element in run.Elements())
            {
                switch (element)
                {
                case DocumentFormat.OpenXml.Wordprocessing.Break @break when @break.Type?.Value == BreakValues.Page:
                    buffer.Append("{PageBreak}");
                    break;

                case AlternateContent alternateContent:
                    if (alternateContent.Descendants <GraphicFrameLocks>().Any())
                    {
                        buffer.Append("{IMG}");
                        break;
                    }
                    var textBoxes  = alternateContent.Elements <AlternateContentFallback>().SelectMany(f => f.Descendants <TextBoxContent>());
                    var paragraphs = textBoxes.SelectMany(textBox => textBox.Elements <Paragraph>()).ToList();
                    foreach (var paragraph in paragraphs.Select(p => Convert(p, dqStyleTable, fontScheme, dqNumberingTable)))
                    {
                        buffer.AppendLine(paragraph.Text);
                    }
                    break;

                case Text text:
                    buffer.Append(text.Text);
                    break;

                case TabChar tab:
                    buffer.Append('\t');
                    break;

                case Drawing drawing:
                    if (drawing.Descendants <DocumentFormat.OpenXml.Drawing.Pictures.Picture>().Any())
                    {
                        buffer.Append("{IMG}");
                    }
                    break;
                }
            }

            return(buffer.ToString());
        }
示例#2
0
        private string GetText(Paragraph paragraph, DqStyleTable dqStyleTable, DqFontScheme fontScheme, DqNumberingTable dqNumberingTable)
        {
            var buffer = new StringBuilder();

            foreach (var child in paragraph.Elements())
            {
                switch (child)
                {
                case Run run:
                    buffer.Append(GetText(run, dqStyleTable, fontScheme, dqNumberingTable));
                    break;

                case DocumentFormat.OpenXml.Wordprocessing.Hyperlink hyperlink:
                    foreach (var run in hyperlink.Elements <Run>())
                    {
                        buffer.Append(GetText(run, dqStyleTable, fontScheme, dqNumberingTable));
                    }
                    break;
                }
            }

            return(buffer.ToString());
        }
示例#3
0
 private DqParagraph Convert(Paragraph paragraph, DqStyleTable dqStyleTable, DqFontScheme dqFontScheme, DqNumberingTable dqNumberingTable) =>
 new DqParagraph(
     text: GetText(paragraph, dqStyleTable, dqFontScheme, dqNumberingTable),
     style: _dqStyleParser.GetParagraphStyle(paragraph, dqStyleTable, dqFontScheme, dqNumberingTable));