Beispiel #1
0
        private void URLButton_Click(object sender, RoutedEventArgs e)
        {
            if (original_url == URLText.Text)
            {
                HTMLList.DataContext = new HTMLDataGridViewModel(GetLoadResults());
                return;
            }
            try
            {
                original_url = URLText.Text;
                root_url     = string.Join("/", URLText.Text.Split(new char[] { '/' }, 4), 0, 3);

                if (driverCheck.IsChecked == false)
                {
                    var html = NetCommon.DownloadString(URLText.Text);
                    tree = new HTMLTree(html);
                    tree.BuildTree();
                    HTMLList.DataContext = new HTMLDataGridViewModel(GetLoadResults());
                }
                else
                {
                    //var driver = new SeleniumWrapper();
                    //driver.Navigate(URLText.Text);
                    //tree = new HtmlTree(driver.GetHtml());
                    //tree.BuildTree();
                    //driver.Close();
                    //HTMLList.DataContext = new HTMLDataGridViewModel(GetLoadResults());
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, Title, MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Beispiel #2
0
 public HTML2RTF(string html)
 {
     this.a = new HTMLTree(html);
     this.d = new FontStyle(HTMLTree.defaultFontName, HTMLTree.defaultFontSize, HTMLTree.defaultColor, Colors.Transparent);
     this.b = new List <object>();
     this.c = new List <object>();
     this.c.Add((object)HTMLTree.defaultFontName);
     this.b.Add((object)HTMLTree.defaultColor);
     this.e = this.f();
 }
Beispiel #3
0
        private string da(string A_0)
        {
            string s   = HTMLTree.HTMLDecode(A_0);
            string str = "";

            byte[] bytes = Encoding.UTF8.GetBytes(s);
            for (int index = 0; index < bytes.Length; ++index)
            {
                str = (int)bytes[index] == 92 || (int)bytes[index] == 123 || (int)bytes[index] == 125 ? str + "\\" + ((char)bytes[index]).ToString() : ((int)bytes[index] <= 128 ? str + ((char)bytes[index]).ToString() : str + "\\'" + ((int)bytes[index]).ToString("x"));
            }
            return(str);
        }
        public async static Task <string> LoadFromHtml(HTMLNode imgNode, string baseUrl)
        {
            Param  param = imgNode.Param.ByName("src");
            string str   = "";

            if (param == null)
            {
                return(str);
            }
            string url = param.Value.Trim().ToLower();

            if ((url == "#") || url.Equals(string.Empty))
            {
                return("");
            }
            if ((url.StartsWith("http://") || url.StartsWith("ftp://")) || url.StartsWith("file://"))
            {
                url = param.Value.Trim();
            }
            else
            {
                url = baseUrl + param.Value.Trim();
            }
            ImageStyle style = new ImageStyle(url);

            using (Stream stream = await NetHelper.Get(url))
            {
                int          width  = 0;
                int          height = 0;
                RandomStream rs     = new RandomStream(stream);
                BitmapImage  image  = new BitmapImage();
                {
                    image.SetSource(rs);
                    width  = image.PixelWidth;
                    height = image.PixelHeight;
                    Param param2 = imgNode.Param.ByName("width");
                    if (param2 != null)
                    {
                        style.Width = HTMLTree.FontSizeFromHTML(param2.Value.Trim());
                    }
                    Param param3 = imgNode.Param.ByName("height");
                    if (param3 != null)
                    {
                        style.Height = HTMLTree.FontSizeFromHTML(param3.Value.Trim());
                    }
                    if ((style.Width != -1) && (style.Height != -1))
                    {
                        width  = style.Width;
                        height = style.Height;
                    }
                    else if (style.Width != -1)
                    {
                        height = (width * style.Height) / style.Width;
                        width  = style.Width;
                    }
                    else if (style.Height != -1)
                    {
                        width  = (height * style.Width) / style.Height;
                        height = style.Height;
                    }
                }
                StringBuilder builder = new StringBuilder();
                builder.AppendFormat("{{\\pict\\wmetafile8\\picwgoal{0}\\pichgoal{1}\n", width * 20, height * 20);
                byte[] buffer = new byte[40];
                stream.Position = 0L;
                int num3 = 0;
                while ((num3 = stream.Read(buffer, 0, 40)) > 0)
                {
                    for (int i = 0; i < num3; i++)
                    {
                        builder.Append(buffer[i].ToString("x").PadLeft(2, '0'));
                    }
                    builder.Append("\n");
                }
                builder.Append("}");
                return(builder.ToString());
            }
        }
Beispiel #5
0
        private string da(HTMLNode A_0, FontStyle A_1, ref int A_2)
        {
            if (A_0.TagName.Equals("head"))
            {
                return("");
            }
            string    str       = "";
            FontStyle fontStyle = A_1;
            int       A_2_1     = -1;
            int       index1    = A_0.Css.Css.IndexOf("font-size", CssType.ForAll, "");

            if (index1 == -1)
            {
                int index2 = A_0.Css.Css.IndexOf("size", CssType.ForAll, "");
                if (index2 != -1)
                {
                    string fontsize = A_0.Css.Css[index2].Value.Trim();
                    fontStyle.FontSize = (uint)HTMLTree.FontSizeFromHTML(fontsize);
                    fontStyle.FontSize = (uint)((((int)fontStyle.FontSize - 1) * 2 + 10) * 2);
                }
            }
            else
            {
                string fontsize = A_0.Css.Css[index1].Value.Trim();
                fontStyle.FontSize = (uint)(HTMLTree.FontSizeFromHTML(fontsize) * 2);
            }
            int index3 = A_0.Css.Css.IndexOf("font-family", CssType.ForAll, "");

            if (index3 != -1)
            {
                fontStyle.FontName = A_0.Css.Css[index3].Value.Trim();
            }
            int index4 = A_0.Css.Css.IndexOf("color", CssType.ForAll, "");

            if (index4 != -1)
            {
                string color = A_0.Css.Css[index4].Value.Trim();
                fontStyle.FontColor = HTMLTree.ColorFromHTML(color);
            }
            int index5 = A_0.Css.Css.IndexOf("align", CssType.ForAll, "");

            if (index5 != -1)
            {
                string align = A_0.Css.Css[index5].Value.Trim();
                fontStyle.Align = HTMLTree.AlignFromHtml(align);
            }
            switch (A_0.TagName)
            {
            case "i":
            case "em":
                fontStyle.IsItalic = true;
                break;

            case "b":
            case "strong":
                fontStyle.IsBold = true;
                break;

            case "u":
                fontStyle.IsUnderLine = true;
                break;

            case "center":
                fontStyle.Align = Alignment.Center;
                break;

            case "ul":
                A_2_1 = 0;
                break;

            case "ol":
                A_2_1 = 1;
                break;

            case "sup":
                fontStyle.Raise = RaiseType.Sup;
                str             = str + "{";
                break;

            case "sub":
                fontStyle.Raise = RaiseType.Sub;
                str             = str + "{";
                break;
            }
            switch (A_0.TagName)
            {
            case "br":
                str = str + "\\par";
                break;

            case "li":
                if (A_2 == 0)
                {
                    str = str + "\\par\n" + this.da(fontStyle) + "{\\pntext\\'B7\\tab}" + this.da(A_0.Text);
                    break;
                }
                else if (A_2 > 0)
                {
                    str = str + "\\par\n " + this.da(fontStyle) + "{\\pntext " + A_2.ToString() + "\\tab}" + this.da(A_0.Text);
                    ++A_2;
                    break;
                }
                else
                {
                    break;
                }

            case "font":
                if (!A_0.Text.Trim().Equals(string.Empty))
                {
                    str = str + this.da(fontStyle) + " " + this.da(A_0.Text);
                    break;
                }
                else
                {
                    break;
                }

            case "p":
            case "div":
                str = str + "\\par\n\\pard" + this.da(fontStyle) + " " + this.da(A_0.Text);
                break;

            case "img":
                str = str + RTFImageHelper.LoadFromHtml(A_0, "");
                break;

            default:
                if (A_0.Text != string.Empty)
                {
                    str = str + this.da(fontStyle) + " " + this.da(A_0.Text);
                    break;
                }
                else
                {
                    break;
                }
            }
            for (int index2 = 0; index2 < A_0.Nodes.Count; ++index2)
            {
                str = str + this.da(A_0.Nodes[index2], fontStyle, ref A_2_1);
            }
            switch (A_0.TagName)
            {
            case "sup":
            case "sub":
                str = str + "}";
                break;
            }
            return(str);
        }