using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using VEPROMS.CSLA.Library; using System.IO; using Volian.Svg.Library; using Volian.Print.Library; using Volian.Base.Library; namespace PrintMSWord { public partial class frmPrintMSWord : Form { public frmPrintMSWord() { InitializeComponent(); } public string MyStatus { get { return tsslStatus.Text; } set { tsslStatus.Text = value; Application.DoEvents(); } } private DateTime _TimerStart; public DateTime TimerStart { get { return _TimerStart; } set { _TimerStart = value; } } private string _ProcedureNumber; public string ProcedureNumber { get { return _ProcedureNumber; } set { _ProcedureNumber = value; } } public string MyTimerStatus { get { return tsslStatus.Text; } set { TimeSpan ts = DateTime.Now - _TimerStart; DateTime dt = new DateTime(ts.Ticks); tsslStatus.Text = string.Format("{0:HH:mm:ss.fff} {1} {2}",dt,ProcedureNumber,value); Application.DoEvents(); } } private DocVersionInfo GetDocVersionWithContent() { DocVersionInfoList dvList = DocVersionInfoList.Get(); foreach (DocVersionInfo docVersion in dvList) if (docVersion.Procedures != null) if (docVersion.Procedures[0].ItemID != 0) return docVersion; return null; } public ProcedureInfo MyProcedure { get { return lbProcs.SelectedValue as ProcedureInfo; } } private void lbProcs_DoubleClick(object sender, EventArgs e) { CreatePDF(); } private void CreatePDF() { TimerStart = DateTime.Now; ProcedureInfo myProcedure = MyProcedure; Volian.Print.Library.Rtf2Pdf.PdfDebug = true; tbTimings.Text = ""; Cursor saveCursor = this.Cursor; this.Cursor = Cursors.WaitCursor; //ProcedureConfig.PrintWatermark pw = MyProcedure.ProcedureConfig.Print_Watermark; CreatePDF(myProcedure,true,false); this.Cursor = saveCursor; } private void CreatePDF(ProcedureInfo myProcedure, bool openPdf,bool saveLinks) { // set up for using format default change bars. ChangeBarDefinition cbd = new ChangeBarDefinition(); ChangeBarData changeBarData = MyProcedure.ActiveFormat.PlantFormat.FormatData.ProcData.ChangeBarData; cbd.MyChangeBarType = PrintChangeBar.WithDefault; cbd.MyChangeBarText = changeBarData.ChangeBarMessage == "ChgID" ? PrintChangeBarText.ChgID : changeBarData.ChangeBarMessage == "DateAndChgID" ? PrintChangeBarText.DateChgID : changeBarData.ChangeBarMessage == "None" ? PrintChangeBarText.None : changeBarData.ChangeBarMessage == "RevNum" ? PrintChangeBarText.RevNum : PrintChangeBarText.UserDef; PromsPrinter pp = new PromsPrinter(myProcedure, tbRev.Text, cbWatermark.Text, cbDebugOutput.Checked, false, @"C:\TEMP\32Bit\Compare", openPdf, true, cbd, myProcedure.DisplayNumber.Replace('/','_').Replace('\\','_'),false,false,"",false,false); pp.StatusChanged += new PromsPrinterStatusEvent(pp_StatusChanged); _ElapsedTime = new Dictionary(); DateTime tStart = DateTime.Now; string pdfFile = pp.Print(@"C:\TEMP\32Bit", false, false); // (pdfpath, makePlaceKeeper, makeContinuousActionSummary) DateTime tEnd = DateTime.Now; _ElapsedTime.Add(PromsPrinterStatusType.Total, DateTime.Now - tStart); MyTimerStatus = pdfFile + " created."; ShowElapsedTime(); //MyStatus = string.Format("{0} created in {1:0.} milliseconds", pdfFile, (TimeSpan.FromTicks(tEnd.Ticks - tStart.Ticks).TotalMilliseconds)); } private void ShowElapsedTime() { foreach (PromsPrinterStatusType type in _ElapsedTime.Keys) tbTimings.Text += "\r\n" + string.Format("'{0}',{1:0.}", type, _ElapsedTime[type].TotalMilliseconds); } private Dictionary _ElapsedTime; private DateTime _LastTime=DateTime.Now; private DateTime _StartTime = DateTime.Now; void pp_StatusChanged(object sender, PromsPrintStatusArgs args) { if (args.Type == PromsPrinterStatusType.Start) _LastTime = _StartTime = args.When; MyStatus = args.MyStatus; TimeSpan delta = TimeSpan.FromTicks(args.When.Ticks - _LastTime.Ticks); if (_ElapsedTime.ContainsKey(args.Type)) _ElapsedTime[args.Type] += delta; else _ElapsedTime.Add(args.Type, delta); //if (tbTimings.Text != "") tbTimings.Text += "\r\n"; //tbTimings.Text += string.Format("{0},{1},'{2}','{3}'", TimeSpan.FromTicks(args.When.Ticks -_StartTime.Ticks).TotalSeconds, delta.TotalMilliseconds, args.Type, args.MyStatus); _LastTime = args.When; } private void pDFToolStripMenuItem_Click(object sender, EventArgs e) { CreatePDF(); } private void frmPrintMSWord_Load(object sender, EventArgs e) { DocVersionInfo dvi = GetDocVersionWithContent(); lbProcs.DataSource = dvi.Procedures; } private void pDFsToolStripMenuItem_Click(object sender, EventArgs e) { TimerStart = DateTime.Now; Volian.Print.Library.Rtf2Pdf.PdfDebug = true; tbTimings.Text = ""; Cursor saveCursor = this.Cursor; this.Cursor = Cursors.WaitCursor; //ProcedureConfig.PrintWatermark pw = MyProcedure.ProcedureConfig.Print_Watermark; ItemInfoList myItems = lbProcs.DataSource as ItemInfoList; tspbStatus.Maximum = myItems.Count; tspbStatus.Value = 0; tspbStatus.Visible = true; foreach (ItemInfo myItem in myItems) { ProcedureNumber = myItem.DisplayNumber; if (tspbStatus != null) tspbStatus.Value++; CreatePDF(myItem.MyProcedure, false,false); } ProcedureNumber = ""; MyTimerStatus = "Processing Complete"; tspbStatus.Visible = false; this.Cursor = saveCursor; } } }