/// <summary> /// 输出嵌入在RTF文档中的文档元素对象 /// </summary> /// <param name="element">文档元素对象</param> /// <param name="attributes">属性列表</param> /// <param name="resultImage">表示元素内容的图片对象</param> public void WriteEmbObject( DomElement element, Image resultImage) { bool disposeImage = false; if (resultImage == null) { resultImage = element.CreateContentImage(); disposeImage = true; } Size size = new Size( GraphicsUnitConvert.ToTwips(resultImage.Width, GraphicsUnit.Pixel), GraphicsUnitConvert.ToTwips(resultImage.Height, GraphicsUnit.Pixel)); this.WriteStartGroup(); this.WriteKeyword("object"); this.WriteKeyword("objemb"); this.WriteCustomAttribute("objclass", XWriterObjectPrefix + element.GetType().FullName, true); this.WriteKeyword("objw" + size.Width); this.WriteKeyword("objh" + size.Height); StringWriter writer = new StringWriter(); XmlSerializer ser = Xml.MyXmlSerializeHelper.GetElementXmlSerializer(element.GetType()); ser.Serialize(writer, element); writer.Close(); string xmlText = writer.ToString(); byte[] bs = Encoding.UTF8.GetBytes(xmlText); this.WriteStartGroup(); this.WriteKeyword("objdata", true); this.WriteBytes(bs); this.WriteEndGroup(); this.WriteStartGroup(); this.WriteKeyword("result"); this.WriteImage( resultImage, resultImage.Width, resultImage.Height, null, element.RuntimeStyle); this.WriteEndGroup(); this.WriteEndGroup(); if (disposeImage) { resultImage.Dispose(); } }
/// <summary> /// 输出图片类型的元素 /// </summary> /// <param name="element">文档元素对象</param> public void WriteImageElement(DomElement element) { DocumentContentStyle style = element.RuntimeStyle; Image img = element.CreateContentImage(); if (img != null) { HtmlAttachFile file = this.AddImage(img, null); WriteStartElement("img"); WriteStartStyle(); WriteDocumentContentStyle(element.RuntimeStyle, element); WriteEndStyle(); WriteAttributeString("src", file.ReferenceCode); WriteAttributeString( "width", GraphicsUnitConvert.ToCSSLength( element.Width, element.OwnerDocument.DocumentGraphicsUnit, CssLengthUnit.Pixels)); WriteAttributeString( "width", GraphicsUnitConvert.ToCSSLength( element.Height, element.OwnerDocument.DocumentGraphicsUnit, CssLengthUnit.Pixels)); if (element is DomImageElement) { string title = ((DomImageElement)element).Title; if (title != null && title.Length > 0) { WriteAttributeString("title", title); } } WriteEndElement(); } }