Example #1
0
        public static void CleanUp(GShopReader shop, ElementReader element, bool removeStyles = true, bool removeWeapon = true)
        {
            List <ShopItem> removeItems = new List <ShopItem>();

            foreach (var item in shop.Items)
            {
                foreach (var i in element.GetListById(84))
                {
                    if (!removeStyles && i.GetByKey("id_major_type") != (int)Type.Weapon)
                    {
                        continue;
                    }
                    if (!removeWeapon && i.GetByKey("id_major_type") == (int)Type.Weapon)
                    {
                        continue;
                    }
                    if (i.GetByKey("ID") != item.ItemId)
                    {
                        continue;
                    }
                    removeItems.Add(item);
                    break;
                }
            }
            foreach (var rr in removeItems)
            {
                shop.RemoveItem(rr);
            }
        }
Example #2
0
        public static void AddUniqStyles(ElementReader oldElem, ElementReader newElem, out HashSet <string> paths,
                                         out HashSet <string> weaponsPaths)
        {
            paths        = new HashSet <string>();
            weaponsPaths = new HashSet <string>();
            foreach (var i in FindUniqStyles(oldElem, newElem))
            {
                var newItem = AdvancedCopy(oldElem.GetFirstInList(84), i);

                if (newItem.GetByKey("id_major_type") == (int)Style.Type.Hat)
                {
                    CopyHat(oldElem, newElem, newItem);
                }

                oldElem.AddItem(84, newItem, true);
                if (newItem.GetByKey("id_major_type") != (int)Style.Type.Weapon)
                {
                    paths.Add(newItem.GetByKey("gender") == 0
                        ? "男"
                        : "女" + "//" + ((string)newItem.GetByKey("realname")).Replace("\0", ""));
                }
                else
                {
                    weaponsPaths.Add(newItem.GetByKey("file_model_right"));
                    weaponsPaths.Add(newItem.GetByKey("file_model_left"));
                }
            }
        }
 public CommandDefinition(string name, Func <SimpleCommandElement, bool> command,
                          ElementReader <SimpleCommandElement, CommandDefinition> reader)
 {
     Name    = name;
     Command = command;
     Reader  = reader;
 }
Example #4
0
        private static List <Item> FindUniqStyles(ElementReader oldElem, ElementReader newElem)
        {
            var result = new List <Item>();

            foreach (var newItem in newElem.GetListById(84))
            {
                var flag = true;
                foreach (var oldItem in oldElem.GetListById(84))
                {
                    if (newItem.GetByKey("id_major_type") != (int)Style.Type.Weapon)
                    {
                        if (newItem.GetByKey("gender") == oldItem.GetByKey("gender") &&
                            newItem.GetByKey("realname") == oldItem.GetByKey("realname"))
                        {
                            flag = false;
                            break;
                        }
                    }
                    else if (newItem.GetByKey("file_model_right").Equals(oldItem.GetByKey("file_model_right")) ||
                             newItem.GetByKey("file_model_left").Equals(oldItem.GetByKey("file_model_left")))
                    {
                        flag = false;
                        break;
                    }
                }
                if (flag)
                {
                    result.Add(newItem);
                }
            }
            return(result);
        }
        static void ProcessElements(ElementReader reader)
        {
            Element element;

            while ((element = reader.Next()) != null)                   // Read page contents
            {
                switch (element.GetType())
                {
                case Element.Type.e_path:                                                       // Process path data...
                {
                    PathData data   = element.GetPathData();
                    double[] points = data.points;
                    break;
                }

                case Element.Type.e_text:                               // Process text strings...
                {
                    String str = element.GetTextString();
                    Console.WriteLine(str);
                    break;
                }

                case Element.Type.e_form:                                                       // Process form XObjects
                {
                    Console.WriteLine("Process Element.Type.e_form");
                    reader.FormBegin();
                    ProcessElements(reader);
                    reader.End();
                    break;
                }
                }
            }
        }
        static void Main(string[] args)
        {
            PDFNet.Initialize();

            // Relative path to the folder containing test files.
            string input_path = "../../TestFiles/";

            try
            {
                Console.WriteLine("-------------------------------------------------");
                Console.WriteLine("Sample 1 - Extract text data from all pages in the document.");

                // Open the test file
                Console.WriteLine("Opening the input pdf...");
                using (PDFDoc doc = new PDFDoc(input_path + "newsletter.pdf"))
                    using (ElementReader page_reader = new ElementReader())
                    {
                        doc.InitSecurityHandler();

                        PageIterator itr;
                        for (itr = doc.GetPageIterator(); itr.HasNext(); itr.Next())                            //  Read every page
                        {
                            page_reader.Begin(itr.Current());
                            ProcessElements(page_reader);
                            page_reader.End();
                        }
                        Console.WriteLine("Done.");
                    }
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
            }
        }
Example #7
0
        /// <summary>
        /// extract text in the pdf page
        /// </summary>
        void ExtractText()
        {
            _charCode = -1;

            _pageMatrix = PdfPage.GetDefaultMatrix();

            _pageHeight = PdfPage.GetPageHeight();

            _textLines = new PdfLineOfText[((int)_pageHeight >> 2) + 8];

            using (ElementReader page_reader = new ElementReader())
            {
                page_reader.Begin(PdfPage);
                ProcessElements(page_reader);
            }

            PdfLineOfText preLt = null;

            for (int i = 0; i < _textLines.Length; i++)
            {
                var lt = _textLines[i];

                if (preLt != null && lt != null && preLt.FirstChar.Top - lt.FirstChar.Top < 3)
                {
                    preLt.AddPdfChars(lt.Chars);

                    _textLines[i] = lt = null;
                }

                preLt = lt;
            }
        }
Example #8
0
        public static void AddStyles(GShopReader shop, ElementReader element)
        {
            foreach (var ssin in RemoveStylesDuplicates(element))
            {
                var cat    = ssin.GetByKey("gender") == 0 ? 6 : 7;
                int subcat = ssin.GetByKey("id_major_type");
                if (subcat == (int)Type.Weapon)
                {
                    continue;
                }
                switch (subcat)
                {
                case (int)Type.Up:
                    subcat = 0;
                    break;

                case (int)Type.Down:
                    subcat = 1;
                    break;

                case (int)Type.Boots:
                    subcat = 2;
                    break;

                case (int)Type.Bracers:
                    subcat = 3;
                    break;

                case (int)Type.Hat:
                    subcat = 4;
                    break;
                }
                shop.AddItem(ssin.GetByKey("ID"), cat, subcat, ssin.GetByKey("Name"), ssin.GetByKey("file_icon"), true);
            }
        }
Example #9
0
        void GetTextElement(int pageNum, ElementReader reader, List <TextAndAxisValue> values, double bottomAxisValue, double topAixsValue, bool isMatchNum)
        {
            Element element;

            while ((element = reader.Next()) != null)
            {
                Element.Type elementType = element.GetType();
                switch (elementType)
                {
                case Element.Type.e_text:
                    ProcessText(pageNum, element, values, bottomAxisValue, topAixsValue, isMatchNum);
                    break;

                case Element.Type.e_text_begin:
                    GetTextElement(pageNum, reader, values, bottomAxisValue, topAixsValue, isMatchNum);
                    break;

                case Element.Type.e_text_end:
                    return;

                case Element.Type.e_form:
                    reader.FormBegin();
                    GetTextElement(pageNum, reader, values, bottomAxisValue, topAixsValue, isMatchNum);
                    reader.End();
                    break;
                }
                reader.ClearChangeList();
            }
        }
Example #10
0
 protected PropertyDefinition(string name, Type valueType, object defaultValueObj,
                              ElementReader <PropertyElement, PropertyDefinition> reader)
 {
     Name            = name;
     ValueType       = valueType;
     DefaultValueObj = defaultValueObj;
     Reader          = reader;
 }
Example #11
0
        static void Main(string[] args)
        {
            IElementReader reader = new ElementReader();
            var            items  = reader.Read(filePathFromXML);

            IElementWriter writer = new ElementWriter();

            writer.Write(items, filePathToJSON);
        }
Example #12
0
        private void button3_Click(object sender, EventArgs e)
        {
            progressBar1.Value = 0;
            new Thread(() =>
            {
                try
                {
                    UISetter(true);
                    var to = new ElementReader(Helper._versions[Convert.ToInt16(button1.Text)], textBox1.Text);
                    progressBar1.Maximum = to.Items.Count;
                    var from = new ElementReader(Helper._versions[Convert.ToInt16(button2.Text)], textBox2.Text);
                    for (int i = 1; i <= to.Items.Count; i++)
                    {
                        label3.Text = string.Format("Конвертируется лист - {0}", i);
                        if (i == 59)
                            i += 1;
                        progressBar1.Value = i;
                        var removable = new List<Item>();
                        foreach (var it in to.GetListById(i))
                        {
                            removable.Add(it);
                        }
                        if (removable.Count == 0)
                            continue;
                        removable.RemoveAt(0);
                        foreach (var it in removable)
                        {
                            to.RemoveItem(i, it);
                        }
                        // Cleaning
                        foreach (var item in from.GetListById(i))
                        {
                            to.AddItem(i, item, false);
                        }
                        to.RemoveItem(i, to.GetFirstInList(i));
                        //    to.RemoveItem(i, to.GetLastInList(i));
                    }

                    if (File.Exists(textBox1.Text + ".bak"))
                        File.Delete(textBox1.Text + ".bak");

                    File.Move(textBox1.Text,textBox1.Text+".bak");
                    label3.Text = "Сохраняем...";
                    to.Save(textBox1.Text);
                    label3.Text = "Сохранено :)";
                    MessageBox.Show(string.Format("Сохранено в файл {0}\nБекап - {1}", textBox1.Text,
                      Path.GetFileName(textBox1.Text) + ".bak"));
                    UISetter(false);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                    UISetter(false);
                }

            }).Start();
        }
Example #13
0
 public static void AddUniqFly(ElementReader oldElem, ElementReader newElem, out HashSet <string> flyPaths)
 {
     flyPaths = new HashSet <string>();
     foreach (var newIt in newElem.GetListById(23))
     {
         var flag = oldElem.GetListById(23).All(oldIt => !newIt.GetByKey("file_model").Equals(oldIt.GetByKey("file_model")));
         if (flag)
         {
             flyPaths.Add(UtilsIO.NormalizeString(newIt.GetByKey("file_model")));
             oldElem.AddItem(23, AdvancedCopy(oldElem.GetFirstInList(23), newIt), true);
         }
     }
 }
Example #14
0
        private static void CopyHat(ElementReader oldElem, ElementReader newElem, Item item)
        {
            int hairID        = item.GetByKey("id_hair");
            int hairTextureID = item.GetByKey("id_hair_texture");

            if (newElem.FindInList(64, hairID) == null || newElem.FindInList(60, hairTextureID) == null)
            {
                return;
            }

            item.SetByKey("id_hair", oldElem.AddItem(64, AdvancedCopy(oldElem.GetFirstInList(64), newElem.FindInList(64, hairID))));
            item.SetByKey("id_hair_texture", oldElem.AddItem(60, AdvancedCopy(oldElem.GetFirstInList(60), newElem.FindInList(60, hairTextureID))));
        }
        // Used in code snippet 2.
        static void ProcessElements(ElementReader reader)
        {
            Element element;

            while ((element = reader.Next()) != null)                   // Read page contents
            {
                // In this sample we process only paths & text, but the code can be
                // extended to handle any element type.
                Element.Type type = element.GetType();
                if (type == Element.Type.e_path || type == Element.Type.e_text || type == Element.Type.e_path)
                {
                    switch (type)
                    {
                    case Element.Type.e_path:                                   // Process path ...
                        Console.WriteLine();
                        Console.Write("PATH: ");
                        break;

                    case Element.Type.e_text:                                                   // Process text ...
                        Console.WriteLine();
                        Console.WriteLine("TEXT: " + element.GetTextString());
                        break;

                    case Element.Type.e_form:                                                   // Process form XObjects
                        Console.WriteLine();
                        Console.Write("FORM XObject: ");
                        //reader.FormBegin();
                        //ProcessElements(reader);
                        //reader.End();
                        break;
                    }

                    // Check if the element is associated with any structural element.
                    // Content items are leaf nodes of the structure tree.
                    SElement struct_parent = element.GetParentStructElement();
                    if (struct_parent.IsValid())
                    {
                        // Print out the parent structural element's type, title, and object number.
                        Console.Write(" Type: " + struct_parent.GetType()
                                      + ", MCID: " + element.GetStructMCID());
                        if (struct_parent.HasTitle())
                        {
                            Console.Write(". Title: " + struct_parent.GetTitle());
                        }
                        Console.Write(", Obj#: " + struct_parent.GetSDFObj().GetObjNum());
                    }
                }
            }
        }
Example #16
0
 public static void Translate(ElementReader fromT, ElementReader toT)
 {
     for (var i = 0; i < toT.Items.Keys.Count; i++)
     {
         foreach (var toItem in toT.GetListById(i))
         {
             var item = toItem;
             foreach (var fromIt in fromT.GetListById(i).Where(fromIt => item.GetByKey("ID") == fromIt.GetByKey("ID")))
             {
                 toItem.SetByKey("Name", fromIt.GetByKey("Name"));
                 break;
             }
         }
     }
 }
Example #17
0
        connect(Transport.ConnectionInfo connectionInfo,
                ElementListener elementListener, IRunnable onConnected)
        {
            close();

            socket_ = connectSocket
                          (((ConnectionInfo)connectionInfo).getHost(),
                          ((ConnectionInfo)connectionInfo).getPort());

            elementReader_ = new ElementReader(elementListener);

            if (onConnected != null)
            {
                onConnected.run();
            }
        }
Example #18
0
        private static List <Item> RemoveStylesDuplicates(ElementReader element)
        {
            var index         = new List <Item>();
            var elementStyles = element.GetListById(84).ToList();

            Console.WriteLine("Size before " + elementStyles.Count);

            // VALUES //
            int REALNAME          = elementStyles[0].GetPos("realname");
            int GENDER            = elementStyles[0].GetPos("gender");
            int ID_MAJOR_TYPE     = elementStyles[0].GetPos("id_major_type");
            int REQUIRE_DYE_COUNT = elementStyles[0].GetPos("require_dye_count");

            // VALUES //

            for (int i = 0; i < elementStyles.Count; i++)
            {
                for (int j = i + 1; j < elementStyles.Count; j++)
                {
                    var now  = elementStyles[i];
                    var next = elementStyles[j];
                    if (now.GetByPos(REALNAME) != next.GetByPos(REALNAME) || now.GetByPos(GENDER) != next.GetByPos(GENDER) ||
                        now.GetByPos(ID_MAJOR_TYPE) != (int)Type.Weapon || next.GetByPos(ID_MAJOR_TYPE) != (int)Type.Weapon)
                    {
                        continue;
                    }
                    if ((now.GetByPos(REQUIRE_DYE_COUNT) > 0 && next.GetByPos(REQUIRE_DYE_COUNT) == 0))
                    {
                        index.Add(next);
                    }
                    else if (now.GetByPos(REQUIRE_DYE_COUNT) == 0 && next.GetByPos(REQUIRE_DYE_COUNT) > 0)
                    {
                        index.Add(now);
                    }
                    else if (now.GetByPos(REQUIRE_DYE_COUNT) == next.GetByPos(REQUIRE_DYE_COUNT))
                    {
                        index.Add(next);
                    }
                }
            }
            foreach (var style in index)
            {
                elementStyles.Remove(style);
            }
            Console.WriteLine("Size after " + elementStyles.Count);
            return(elementStyles);
        }
Example #19
0
        public static void AddWeapons(GShopReader shop, ElementReader element)
        {
            foreach (var ss in RemoveWeaponsDuplicates(element))
            {
                var cat    = ss.GetByKey("gender") == 0 ? (int)Gender.Man : (int)Gender.Women;
                int subcat = ss.GetByKey("character_combo_id");
                switch (subcat)
                {
                case 32:
                    subcat = (int)WeaponSub.Sin;
                    break;

                case 4:
                    subcat = (int)WeaponSub.Sham;
                    break;

                case 273:
                    subcat = (int)WeaponSub.Swords;
                    break;

                case 64:
                    subcat = (int)WeaponSub.Archer;
                    break;

                case 97:
                    subcat = (int)WeaponSub.Archer;
                    break;

                case 17:
                    subcat = (int)WeaponSub.Bylav;
                    break;

                case 650:
                    subcat = (int)WeaponSub.Posox;
                    break;

                case 89:
                    subcat = (int)WeaponSub.Kastet;
                    break;

                default:
                    subcat = (int)WeaponSub.Diff;
                    break;
                }
                shop.AddItem(ss.GetByKey("ID"), cat, subcat, ss.GetByKey("Name"), ss.GetByKey("file_icon"), true);
            }
        }
Example #20
0
        public static void GetExsistingIDs(ElementReader element)
        {
            var ids = new HashSet <int>();

            foreach (var key in element.Items.Keys)
            {
                if (key.Contains("070"))
                {
                    continue;
                }
                foreach (var it in element.Items[key])
                {
                    ids.Add(it.GetByKey("ID"));
                }
            }
            element.ExistingId = ids;
        }
        static void Main(string[] args)
        {
            try
            {
                PDFNet.Initialize();

                Console.WriteLine("-------------------------------------------------");
                Console.WriteLine("Extract page element information from all ");
                Console.WriteLine("pages in the document.");

                // Open the test file
                using (PDFDoc doc = new PDFDoc(input_path + "newsletter.pdf"))
                {
                    doc.InitSecurityHandler();

                    int          pgnum = doc.GetPageCount();
                    PageIterator itr;

                    using (ElementReader page_reader = new ElementReader())
                    {
                        for (itr = doc.GetPageIterator(); itr.HasNext(); itr.Next())                                    //  Read every page
                        {
                            Console.WriteLine("Page {0:d}----------------------------------------",
                                              itr.GetPageNumber());

                            Rect crop_box = itr.Current().GetCropBox();
                            crop_box.Normalize();

                            // Console.WriteLine(" Page Rectangle: x={0:f} y={1:f} x2={2:f} y2={3:f}", crop_box.x1, crop_box.y1, crop_box.x2, crop_box.y2);
                            // Console.WriteLine(" Page Size: width={0:f} height={1:f}", crop_box.Width(), crop_box.Height());

                            page_reader.Begin(itr.Current());
                            ProcessElements(page_reader);
                            page_reader.End();
                        }
                    }

                    Console.WriteLine("Done.");
                }
            }
            catch (PDFNetException e)
            {
                Console.WriteLine(e.Message);
            }
        }