private void ReadContent( RTFDomElement parentNode, DomDocument doc, DomElementList result, DocumentFormatInfo format) { if (format == null) { format = new DocumentFormatInfo(); } //if ( parentNode == null || parentNode.Elements == null) //{ // System.Console.WriteLine(""); // return; //} foreach (RTFDomElement element in parentNode.Elements) { if (element is RTFDomHeader) { if (((RTFDomHeader)element).HasContentElement) { XTextDocumentHeaderElement header = new XTextDocumentHeaderElement(); doc.PageSettings.HeaderDistance = (int)(GraphicsUnitConvert.FromTwips( (double)this._RTFDocument.HeaderDistance, GraphicsUnit.Inch) * 100.0); result.Add(header); ReadContent(element, doc, header.Elements, format); } } else if (element is RTFDomFooter) { if (((RTFDomFooter)element).HasContentElement) { XTextDocumentFooterElement footer = new XTextDocumentFooterElement(); doc.PageSettings.FooterDistance = (int)(GraphicsUnitConvert.FromTwips( (double)this._RTFDocument.FooterDistance, GraphicsUnit.Inch) * 100.0); result.Add(footer); ReadContent(element, doc, footer.Elements, format); } } else if (element is RTFDomParagraph) { RTFDomParagraph domP = (RTFDomParagraph)element; //XTextParagraph p = new XTextParagraph(); //p.OwnerDocument = doc; DocumentContentStyle style = ToDocumentContentStyle( domP.Format, doc.DocumentGraphicsUnit); ReadContent(element, doc, result, domP.Format); if (domP.IsTemplateGenerated == false || this.ImportTemplateGenerateParagraph) { DomParagraphFlagElement eof = new DomParagraphFlagElement(); eof.StyleIndex = doc.ContentStyles.GetStyleIndex(style); result.Add(eof); } } else if (element is RTFDomText) { RTFDomText domText = (RTFDomText)element; if (domText.Format.Hidden == false && domText.Text != null && domText.Text.Length > 0) { DocumentContentStyle style = ToDocumentContentStyle( domText.Format, doc.DocumentGraphicsUnit); int si = doc.ContentStyles.GetStyleIndex(style); result.AddRange(doc.CreateChars(domText.Text, si)); } } else if (element is RTFDomImage) { // 插入图片 RTFDomImage domImg = (RTFDomImage)element; DomImageElement img = new DomImageElement(); img.OwnerDocument = doc; img.Image = new XImageValue(domImg.Data); DocumentContentStyle style = ToDocumentContentStyle( domImg.Format, doc.DocumentGraphicsUnit); img.StyleIndex = doc.ContentStyles.GetStyleIndex(style); img.Width = GraphicsUnitConvert.FromTwips(domImg.Width, doc.DocumentGraphicsUnit); img.Height = GraphicsUnitConvert.FromTwips(domImg.Height, doc.DocumentGraphicsUnit); result.Add(img); } else if (element is RTFDomShape) { } else if (element is RTFDomShapeGroup) { } else if (element is RTFDomLineBreak) { // 软回车 result.Add(new DomLineBreakElement());// doc.CreateLineBreak()); } else if (element.Elements != null && element.Elements.Count > 0) { ReadContent(element, doc, result, format.Clone()); } }//foreach }