private void btnPrintText_Click(object sender, EventArgs e) { if (m_BrDoc.Lines.Count < 1) { MsgBoxHelper.ShowInfo("沒有資料可供列印!"); return; } if (cboPrinters.SelectedIndex < 0) { MsgBoxHelper.ShowInfo("尚未選擇印表機!"); return; } PrintOptions prnOpt = GetPrintOptions(); if (prnOpt == null) { return; } DualPrintHelper prn = new DualPrintHelper(m_BrDoc, prnOpt); prn.PrintText(false); }
/// <summary> /// 直接預覽明眼字,而不顯示列印對話窗。 /// </summary> public void PreviewText() { LoadSettings(); // 載入先前儲存的設定。 if (m_BrDoc.Lines.Count < 1) { MsgBoxHelper.ShowInfo("沒有資料可供列印!"); return; } if (cboPrinters.SelectedIndex < 0) { MsgBoxHelper.ShowInfo("尚未選擇印表機!"); return; } m_DontSaveSettings = true; // 視窗關閉時不要儲存設定 cboPrintTextManualDoubleSide.SelectedIndex = 0; PrintOptions prnOpt = GetPrintOptions(); if (prnOpt == null) { return; } DualPrintHelper prn = new DualPrintHelper(m_BrDoc, prnOpt); prn.PrintText(true); }
public DualPrintHelper(BrailleDocument brDoc, PrintOptions prnOpt) { m_BrDoc = brDoc; m_PrintOptions = prnOpt; m_PrintDoc = new PrintDocument(); m_PrintDoc.BeginPrint += new PrintEventHandler(BrailleText_BeginPrint); m_PrintDoc.QueryPageSettings += new QueryPageSettingsEventHandler(BrailleText_QueryPageSettings); m_PrintDoc.PrintPage += new PrintPageEventHandler(BrailleText_PrintPage); m_PrintDoc.EndPrint += new PrintEventHandler(BrailleText_EndPrint); m_PreviewOnly = false; }
private void btnPrintBraille_Click(object sender, EventArgs e) { if (m_BrDoc.Lines.Count < 1) { MsgBoxHelper.ShowInfo("沒有資料可供列印!"); return; } bool isToFile = chkPrintBrailleToFile.Checked; string fileName = txtBrailleFileName.TextBox.Text.Trim(); if (isToFile && String.IsNullOrEmpty(fileName)) { MsgBoxHelper.ShowInfo("請指定欲輸出的檔案名稱。"); txtBrailleFileName.Focus(); return; } if (chkPrintBraille.Checked) { if (String.IsNullOrWhiteSpace(cboPrintersForBraille.Text)) { MessageBox.Show("請指定欲輸出點字的印表機!"); cboPrintersForBraille.Focus(); return; } } PrintOptions prnOpt = GetPrintOptions(); if (prnOpt == null) { return; } DualPrintHelper prn = new DualPrintHelper(m_BrDoc, prnOpt); prn.PrintBraille(chkPrintBraille.Checked, chkPrintBrailleToFile.Checked, fileName); }
/// <summary> /// 將目前的列印參數蒐集並集中存入 PrintOptions 物件。 /// </summary> /// <returns></returns> private PrintOptions GetPrintOptions() { PrintOptions prnOpt = new PrintOptions { LinesPerPage = AppGlobals.Config.Braille.LinesPerPage, PrintPageFoot = chkPrintPageFoot.Checked, // 列印範圍 AllPages = rdoPrintAll.Checked }; if (!prnOpt.AllPages) { string[] pageRange = txtPageRange.Text.Split(new char[] { '-' }); if (pageRange.Length != 2) { MsgBoxHelper.ShowInfo("列印範圍無效: " + txtPageRange.Text); txtPageRange.Focus(); return(null); } prnOpt.FromPage = Convert.ToInt32(pageRange[0]); prnOpt.ToPage = Convert.ToInt32(pageRange[1]); if (prnOpt.FromPage <= 0 || prnOpt.ToPage <= 0 || prnOpt.FromPage > prnOpt.ToPage) { MsgBoxHelper.ShowInfo("列印範圍無效: " + txtPageRange.Text); txtPageRange.Focus(); return(null); } int totalPages = AppGlobals.CalcTotalPages(m_BrDoc.Lines.Count, prnOpt.LinesPerPage, prnOpt.PrintPageFoot); if (prnOpt.FromPage > totalPages || prnOpt.ToPage > totalPages) { MsgBoxHelper.ShowInfo("列印範圍無效! 起始頁或終止頁超出總頁數。"); txtPageRange.Focus(); return(null); } } // 起始頁碼 prnOpt.ReassignStartPageNumber = chkChangeStartPageNum.Checked; if (prnOpt.ReassignStartPageNumber) { try { prnOpt.StartPageNumber = Convert.ToInt32(txtStartPageNumber.Text); if (prnOpt.StartPageNumber < 1) { MsgBoxHelper.ShowInfo("無效的起始頁碼: " + txtStartPageNumber.Text); return(null); } } catch { MsgBoxHelper.ShowInfo("無效的起始頁碼: " + txtStartPageNumber.Text); return(null); } } // 手動雙面列印 switch (cboPrintTextManualDoubleSide.SelectedIndex) { case 1: prnOpt.DoubleSideEffect = DoubleSideEffect.OddPages; break; case 2: prnOpt.DoubleSideEffect = DoubleSideEffect.EvenPages; break; default: prnOpt.DoubleSideEffect = DoubleSideEffect.None; break; } prnOpt.PrinterName = cboPrinters.Text; prnOpt.PrinterNameForBraille = cboPrintersForBraille.Text; prnOpt.PaperSourceName = m_PaperSourceName; prnOpt.PaperName = m_PaperName; prnOpt.OddPageMargins = m_OddPageMargins; prnOpt.EvenPageMargins = m_EvenPageMargins; prnOpt.BrSendPageBreakAtEndOfDoc = chkSendPageBreakAtEof.Checked; return(prnOpt); }