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); } }
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; }
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); } }
/// <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; } }
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); } }
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(); } }
protected PropertyDefinition(string name, Type valueType, object defaultValueObj, ElementReader <PropertyElement, PropertyDefinition> reader) { Name = name; ValueType = valueType; DefaultValueObj = defaultValueObj; Reader = reader; }
static void Main(string[] args) { IElementReader reader = new ElementReader(); var items = reader.Read(filePathFromXML); IElementWriter writer = new ElementWriter(); writer.Write(items, filePathToJSON); }
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(); }
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); } } }
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()); } } } }
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; } } } }
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(); } }
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); }
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); } }
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); } }