Ejemplo n.º 1
0
        public void AddStyleSheet(string src)
        {
            HtmlElement   lnk  = new HtmlElement("link", false);
            HtmlAttribute rel  = new HtmlAttribute("rel", "stylesheet");
            HtmlAttribute type = new HtmlAttribute("type", "text/css");
            HtmlAttribute href = new HtmlAttribute("href", src);

            lnk.AddAttribute(rel);
            lnk.AddAttribute(type);
            lnk.AddAttribute(href);
            this.AddChild(lnk);
        }
Ejemplo n.º 2
0
        void _refactorFormatXaml_Apply(object sender, ApplyContentEventArgs ea)
        {
            var element             = GetActiveHtmlElement(ea.Element, Options.Sort);
            var keepFirstOnBaseLine = this.Options.KeepFirstAttribute;
            var closeOnOwnLine      = Options.PutCloseTagOnOwnLine;

            if (((element != null) && (element.Attributes != null)) && (element.Attributes.Count != 0))
            {
                HtmlElement newElement = GetNewElement(element);
                string      tabsBefore = GetTabsBefore(element, keepFirstOnBaseLine);
                for (int i = 0; i < element.Attributes.Count; i++)
                {
                    HtmlAttribute attribute = element.Attributes[i];
                    if (keepFirstOnBaseLine && (i == 0))
                    {
                        newElement.AddAttribute(attribute.Name, attribute.Value, attribute.AttributeQuoteType);
                    }
                    else
                    {
                        newElement.AddAttribute(string.Format("\r\n{0}{1}", tabsBefore, attribute.Name), attribute.Value, attribute.AttributeQuoteType);
                    }
                }

                ////if (closeOnOwnLine && !newElement.IsEmptyTag)
                ////{
                ////    string s = CodeRush.Language.GenerateElement(newElement);
                ////    s = CodeRush.StrUtil.RemoveLastLineTerminator(s);
                ////    s += string.Format("\r\n{0}", tabsBefore);

                ////    ////var endLine = newElement.EndLine;
                ////    ////endLine += 1;
                ////    ////var endOffset = newElement.EndOffset;
                ////    ////var sr = new SourceRange(endLine, endOffset);
                ////    ////((XmlElement)newElement).SetBlockEnd(sr);

                ////    newElement = new HtmlElement()
                ////    {

                ////    };
                ////}

                Apply(_refactorFormatXamlAttributes.DisplayName, element, newElement, tabsBefore);
            }
        }
Ejemplo n.º 3
0
            /// <summary>
            /// Searches text for any of tags from the list and returns corresponding element.
            /// </summary>
            public static HtmlElement FindAny(List <HtmlTag> tags, string text, ITagFormatter formatter)
            {
                int bracketPos = 0;

                while (true)
                {
                    bracketPos = text.IndexOf("<", bracketPos, StringComparison.OrdinalIgnoreCase);
                    if (bracketPos != -1)
                    {
                        string subString = text.Substring(bracketPos);
                        //  Compares with tag signatures.
                        for (int i = 0; i < tags.Count; i++)
                        {
                            HtmlTag t = tags[i];
                            if (subString.StartsWith(t.StartTag))
                            {
                                //  Tag has been found in the list.
                                HtmlElement htmlElement = new HtmlElement(t.StartTag, t.EndTag, text, formatter);
                                //  Properly initializes internal state.
                                _ = htmlElement.FindNext();
                                //  Parses attributes.
                                foreach (string attributeName in t.AttributeNames)
                                {
                                    htmlElement.AddAttribute(attributeName, htmlElement.GetAttr(attributeName));
                                }

                                return(htmlElement);
                            }
                        }
                        bracketPos++;
                    }
                    else
                    {
                        break;
                    }
                }
                return(null);
            }
Ejemplo n.º 4
0
        public HtmlElement HandleParagraph(Paragraph p, ConvertConfig conConfig)
        {
            HtmlElement pa = new HtmlElement("p");

            OpenXmlHelper helper = new OpenXmlHelper();

            StyleConfig config = new StyleConfig
            {
                Charset = "EastAsia"
            };

            #region Paragraph
            var pClass = "";
            if (p.ParagraphProperties != null)
            {
                var pPr = p.ParagraphProperties;
                pa.AddStyle(helper.GetStyleFromParagraphProperties(pPr, config));

                if (pPr.ParagraphStyleId != null)
                {
                    var id = pPr.ParagraphStyleId.Val;
                    pClass += "Inner_P_" + id;
                }
            }
            pa.AddAttribute("class", pClass);
            //div.AddChild(_pa);
            var runs = p.Elements <Run>();
            foreach (var r in runs)
            {
                var span = new HtmlElement("span");
                var rpr  = r.RunProperties;

                config.Charset = "EastAsia";
                var   tt  = r.InnerText;
                Regex reg = new Regex("[\x00-\xff]{1,}", RegexOptions.IgnoreCase | RegexOptions.Multiline);
                var   mc  = reg.Match(tt);
                if (mc.Success)
                {
                    config.Charset = "Ascii";
                }
                span.AddStyle(helper.GetStyleFromRunProperties(rpr, config));

                if (r.RunProperties != null && r.RunProperties.RunStyle != null && r.RunProperties.RunStyle.Val != null)
                {
                    var id = r.RunProperties.RunStyle.Val;
                    span.AddAttribute("class", "Inner_P_" + id + " " + "Inner_R_" + id);
                }

                var ts   = r.Elements <Text>();
                var pics = r.Elements <Drawing>();
                foreach (Text t in ts)
                {
                    span.AddChild(new HtmlElement("span", t.InnerText));
                }

                foreach (Drawing d in pics)
                {
                    DocumentFormat.OpenXml.Drawing.GraphicData gd = d.Inline.Graphic.GraphicData;
                    var pic  = gd.Elements <DocumentFormat.OpenXml.Drawing.Pictures.Picture>().ElementAt(0);
                    var pb   = pic.BlipFill;
                    var blip = pb.Blip;
                    var ppp  = blip.Embed.Value;

                    //var path = doc.GetReferenceRelationship(ppp).Uri;
                    //var relationships = doc.Package.GetRelationships();
                    //content += ppp;
                    var imgp = this._mainPart.GetPartById(ppp);

                    var img = new HtmlElement("img");
                    //img.AddAttribute("src", imgp.Uri.ToString().Replace("/word/", "./"));
                    img.AddAttribute("src", conConfig.ResourcePath + imgp.Uri.ToString().Substring(1));
                    span.AddChild(img);
                }
                pa.AddChild(span);
            }
            #endregion
            return(pa);
        }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            string file = "./data/word.docx";

            file = "./data/DirectX_9_3D.docx";

            const string ROOT = "./OUT/";

            string fileMd5 = Utities.GetMd5(Path.GetFileName(file));
            string docRoot = Path.Combine(new[] { ROOT, fileMd5 + "/" });

            ConvertConfig config = new ConvertConfig
            {
                ResourcePath = "./" + fileMd5 + "/"
            };

            if (!Directory.Exists(docRoot))
            {
                Console.WriteLine("Unzip File");
                UnZip un = new UnZip();
                un.UnZipToDir(file, docRoot);
            }

            Console.WriteLine("Convert Word to Html");

            OpenXmlHelper helper = new OpenXmlHelper();

            Html.Html html = new Html.Html();

            HtmlElement meta0 = new HtmlElement("meta", false);

            meta0.AddAttribute("http-equiv", "X-UA-Compatible");
            meta0.AddAttribute("content", "IE=edge,chrome=1");

            HtmlElement meta1 = new HtmlElement("meta", false);

            meta1.AddAttribute("name", "viewport");
            meta1.AddAttribute("content", "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no");

            HtmlElement meta2 = new HtmlElement("meta", false);

            meta2.AddAttribute("name", "apple-mobile-web-app-capable");
            meta2.AddAttribute("content", "yes");

            HtmlElement meta3 = new HtmlElement("meta", false);

            meta3.AddAttribute("http-equiv", "content-type");
            meta3.AddAttribute("content", "text/html; charset=UTF-8");

            html.AddHeadElement(meta0);
            html.AddHeadElement(meta1);
            html.AddHeadElement(meta2);
            html.AddHeadElement(meta3);

            CSS      css  = new CSS();
            CssStyle body = new CssStyle("body");

            body.AddStyle("background-color", "gray");
            CssStyle center = new CssStyle(".center");

            center.AddStyle("text-align", "center");
            css.AddStyle(body);
            //css.AddStyle(center);
            html.AddStyle(css);

            HtmlElement   div      = new HtmlElement("div");
            HtmlAttribute divClass = new HtmlAttribute("class", "documentbody");

            div.AddAttribute(divClass);
            CssStyle divStyle = new CssStyle();

            divStyle.AddStyle("font-family", "'Times New Roman' 宋体");
            divStyle.AddStyle("font-size", "10.5pt");
            divStyle.AddStyle("margin", "0 auto");
            divStyle.AddStyle("width", "600px");
            divStyle.AddStyle("padding", "100px 120px");
            divStyle.AddStyle("border", "2px solid gray");
            divStyle.AddStyle("background-color", "white");

            div.AddStyle(divStyle);

            #region docuemnt

            WordprocessingDocument doc = WordprocessingDocument.Open(file, false);

            //StyleParts
            StylesPart docstyles = doc.MainDocumentPart.StyleDefinitionsPart == null
                ? doc.MainDocumentPart.StylesWithEffectsPart
                : (StylesPart)doc.MainDocumentPart.StyleDefinitionsPart;
            var styles = docstyles.Styles;
            //styles
            var styleEl = styles.Elements <Style>();
            //var i = __styles.Count();
            //生产Style模版对应的CSS Style
            html.AddStyle(helper.GetStyles(styleEl));

            var pps = doc.MainDocumentPart.Document.Body.ChildElements;

            ElementHandler handler = new ElementHandler(doc);

            //处理各个Word元素
            foreach (var pp in pps)
            {
                //Console.WriteLine(pp.GetType().ToString());
                div.AddChild(handler.Handle(pp, config));
            }

            #endregion
            html.AddElement(div);

            string     htmlfile = ROOT + fileMd5 + ".html";
            FileStream fs       = File.Exists(htmlfile)
                ? new FileStream(htmlfile, FileMode.Truncate, FileAccess.Write)
                : new FileStream(htmlfile, FileMode.CreateNew, FileAccess.Write);
            StreamWriter sw = new StreamWriter(fs);
            sw.WriteLine(html.ToString());
            sw.Close();
            fs.Close();

            ////
            //XDocument _styles = null;

            //if (docstyles != null)
            //{
            //    using (var reader = XmlReader.Create(docstyles.GetStream(FileMode.Open, FileAccess.Read)))
            //    {
            //        _styles = XDocument.Load(reader);
            //    }

            //}
            //if (_styles != null)
            //{
            //    //Console.WriteLine(_styles.ToString());
            //}
        }