Esempio n. 1
0
        /// <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);
        }