/// <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();
            }
        }
Exemple #2
0
        /// <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();
            }
        }