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()); }
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()); }
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));