public static object SystemConvertFromXml(XmlElement printRecord, Type type) { PrintRecord record = new PrintRecord(); XmlNode currNode = printRecord.FirstChild; record.Job = (UIJob)UIJob.SystemConvertFromXml((XmlElement)currNode, typeof(UIJob)); currNode = currNode.NextSibling; if (currNode == null) { return(record); } record.innerInkCounts = (List <InnerInkCount>)PubFunc.SystemConvertFromXml(currNode.OuterXml, typeof(List <InnerInkCount>)); if (record.innerInkCounts != null) { foreach (var item in record.innerInkCounts) { record.InkCount[item.Color] = item.Value; } } currNode = currNode.NextSibling; if (currNode == null) { return(record); } record.AllCopiesTime = (long)PubFunc.SystemConvertFromXml(currNode.OuterXml, typeof(long)); currNode = currNode.NextSibling; if (currNode == null) { return(record); } record.PrintedLength = (float)PubFunc.SystemConvertFromXml(currNode.OuterXml, typeof(float)); currNode = currNode.NextSibling; if (currNode == null) { return(record); } record.PrintedArea = (float)PubFunc.SystemConvertFromXml(currNode.OuterXml, typeof(float)); currNode = currNode.NextSibling; if (currNode == null) { return(record); } record.FXOrigin = (float)PubFunc.SystemConvertFromXml(currNode.OuterXml, typeof(float)); currNode = currNode.NextSibling; if (currNode == null) { return(record); } record.FYOrigin = (float)PubFunc.SystemConvertFromXml(currNode.OuterXml, typeof(float)); currNode = currNode.NextSibling; if (currNode == null) { return(record); } record.PrintedTileCount = (int)PubFunc.SystemConvertFromXml(currNode.OuterXml, typeof(int)); return(record); }
/// <summary> /// 保存打印记录到本地 /// </summary> public void Save() { XmlDocument doc = new XmlDocument(); XmlElement root = doc.CreateElement("PrintRecordList"); doc.AppendChild(root); string xml = ""; for (int i = 0; i < printRecords.Count; i++) { PrintRecord printRecord = printRecords[i]; printRecord.Job.Miniature = null; printRecord.Job.PrtFileInfo.sImageInfo.nImageData = IntPtr.Zero; xml += printRecord.SystemConvertToXml(); } root.InnerXml = xml; var fullFileName = GenPrintRecordFullFileName(); doc.Save(fullFileName); }
/// <summary> /// 统计墨量 /// 注:当前提供的接口只能获取到自第一次打印以来所消耗的各个颜色的墨量, /// 要计算某个作业消耗的墨量,只能是打印前和打印后各获取一次消耗的累计墨量,取两者的差值。 /// </summary> /// <param name="job"></param> /// <param name="PrintedCopy">本作业打印的份数</param> /// <param name="endPagePercent">最后一份打印的百分比</param> public void CalculateInk(UIJob job, float printedWidth, int PrintedCopy, int currentPrintPage, float endPagePercent, SPrinterSetting printerSetting) { PrintRecord printRecord = new PrintRecord(); printRecord.Job = job.Clone(); printRecord.AllCopiesTime = job.AllCopiesTime.Ticks; foreach (var colorInk in GetUsedInk()) { printRecord.InkCount[colorInk.Item1] = colorInk.Item2 - inkCountBase[colorInk.Item1]; } if (PrintedCopy == currentPrintPage) { printRecord.PrintedLength = UIPreference.ToDisplayLength(UILengthUnit.Meter, job.JobSize.Height) * (PrintedCopy - 1 + endPagePercent / 100.0f); } else { printRecord.PrintedLength = UIPreference.ToDisplayLength(UILengthUnit.Meter, job.JobSize.Height) * (PrintedCopy + endPagePercent / 100.0f); } if (job.IsClipOrTile) { int printedHeight = (int)(job.JobSize.Height * job.ResolutionY * endPagePercent / 100.0f + job.Clips.YDis); int printedcopy = PrintedCopy; if (PrintedCopy == currentPrintPage) { printedcopy = (PrintedCopy - 1); } printRecord.PrintedTileCount = printedcopy * job.Clips.XCnt * job.Clips.YCnt + ((printedHeight / (job.Clips.ClipRect.Height + job.Clips.YDis)) * job.Clips.XCnt); } else { printRecord.PrintedTileCount = PrintedCopy; } printRecord.PrintedArea = printedWidth * printRecord.PrintedLength; printRecord.FXOrigin = printerSetting.sFrequencySetting.fXOrigin; printRecord.FYOrigin = printerSetting.sBaseSetting.fYOrigin; printRecords.Add(printRecord); }
public static List <PrintRecord> Load(string recordFileName) { List <PrintRecord> results = new List <PrintRecord>(); try { XmlDocument doc = new XmlDocument(); doc.Load(recordFileName); var root = doc.DocumentElement; foreach (XmlElement recordElement in root.ChildNodes) { PrintRecord record = PrintRecord.SystemConvertFromXml(recordElement, typeof(PrintRecord)) as PrintRecord; results.Add(record); } } catch (Exception ex) { MessageBox.Show(ex.Message); } return(results); }