/// <summary> /// Show an open file dialog for source PRD and save File dialog for atrget XML, then convert source PRD to XML. /// when multiple are selected they will be inserted into one XML file representing a collection /// </summary>> public static bool PRDToXml(string targetXML, params string[] sourcePRDs) { try { if (File.Exists(targetXML)) { File.Delete(targetXML); } if (sourcePRDs != null && sourcePRDs.Length == 1) { if (PageOcrData.FromPRD(sourcePRDs[0]).ToXml(targetXML) && File.Exists(targetXML)) { ILog.LogDebug(string.Format("Done converting PRD file [{0}] to XML file [{1}]", sourcePRDs[0], targetXML)); return(true); } } else if (sourcePRDs != null && sourcePRDs.Length > 1) { CollectionOcrData collOcr = new CollectionOcrData(); List <PageOcrData> pages = new List <PageOcrData>(); foreach (string srcPrd in sourcePRDs) { if (File.Exists(srcPrd)) { pages.Add(PageOcrData.FromPRD(srcPrd)); } } collOcr.pages = pages.ToArray(); collOcr.CollectionID = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fffff"); return(collOcr.ToXml(targetXML)); } } catch (Exception ex) { ILog.LogError(ex); } return(false); }
public static void XMLToPRD(object sender, EventArgs e) #endif { try { using (OpenFileDialog opn = new OpenFileDialog()) { opn.Filter = "XML files (*.xml)|*.xml|Any file (*.*)|*.*"; opn.Title = "Open source XML..."; if (opn.ShowDialog() == DialogResult.OK) { using (SaveFileDialog sve = new SaveFileDialog()) { sve.Filter = "PRD files (*.prd)|*.prd|Any file (*.*)|*.*"; sve.Title = "Save target PRD..."; sve.InitialDirectory = Path.GetDirectoryName(opn.FileName); sve.FileName = Path.GetFileNameWithoutExtension(opn.FileName); sve.DefaultExt = "prd"; if (sve.ShowDialog() == DialogResult.OK) { if (XMLToPRD(sve.FileName, opn.FileName)) { ILog.LogDebug(string.Format("Done converting XML file [{0}] to PRD file [{1}].", opn.FileName, sve.FileName)); return; } } } } } ILog.LogWarning("Failed converting XML file to PRD file."); } catch (Exception ex) { ILog.LogError(ex); } }
/// <summary> /// Convert XML file\s to PRD . /// </summary> /// <param name="targetPRD">The target PRD file to create</param> /// <param name="sourceXMLs">Source XML files.</param> /// <returns>true when successfull.</returns> public static bool XMLToPRD(string targetPRD, params string[] sourceXMLs) { bool result = false; try { foreach (string sourceXML in sourceXMLs) { if (!File.Exists(sourceXML)) { continue; } //-- Try loading as a single page --\\ PageOcrData pod = PageOcrData.FromXml(sourceXML); if (pod != null && pod.ToPRD(targetPRD) != null) { if (File.Exists(targetPRD)) { File.Delete(targetPRD); } ILog.LogDebug(string.Format("Done converting XML file [{0}] to PRD file [{1}]", sourceXML, targetPRD)); continue; } //-- Try as a whole collection in a single XML --\\ if (pod == null) { CollectionOcrData cod = CollectionOcrData.FromXml(sourceXML); if (cod != null) { if (cod.Pages != null) { int lastIndex = -1; int maxIndex = 0; foreach (PageOcrData pd in cod.Pages) { lastIndex = pd.Index; while (lastIndex < 0 || lastIndex == pd.Index || lastIndex <= maxIndex) { lastIndex++; } maxIndex = lastIndex; //-- Create a PRD file per page --\\ string newPageName = Path.Combine(Path.GetDirectoryName(targetPRD), string.Format("{0}_P{1}.{2}", Path.GetFileNameWithoutExtension(targetPRD), (lastIndex).ToString("X").PadLeft(3, '0'), Path.GetExtension(targetPRD).TrimStart('.'))); if (File.Exists(newPageName)) { File.Delete(newPageName); } pd.ToPRD(newPageName); } } ILog.LogDebug(string.Format("Done converting XML file [{0}] to PRD file [{1}]", sourceXML, targetPRD)); result = true; } } } } catch (Exception ex) { ILog.LogError(ex); } return(result); }