///<summary>МЕТОД Создаем объект для печати</summary> /// <param name="pMyDocumentViewer">Просмоторщик печати</param> /// <param name="pFlowDocument">Поток с нашим текстом</param> /// <param name="pPrintNow">Печатаем сразу</param> public override bool MET_CreatePrint(MyDocumentViewer pMyDocumentViewer, FlowDocument pFlowDocument, bool pPrintNow = false) { // Сбрасываем фон MyGlo.BrushesOtchet = null; // Формируем отчет (если надо) MET_Inizial(PROP_Nodes); // Новый документ FlowDocument _FlowDocument = new FlowDocument(); // Ширина _FlowDocument.ColumnWidth = 400; // Перебираем все вкладки и вытаскиваем из них информацию foreach (UserPole_History _MyPole in PRO_PoleHistory) { _MyPole.MET_StacPanel(_FlowDocument); // если есть информация, то заносим её в locFlowDocument } // Добавляем отступы _FlowDocument.Blocks.FirstBlock.Padding = new Thickness(Blocks.FirstBlock.Padding.Left, PROP_Otstup, Blocks.FirstBlock.Padding.Right, Blocks.FirstBlock.Padding.Bottom); // Рисуем эмблему MET_ImageEmblema(_FlowDocument); // Формируем объект для печати MET_PreiwPrint(pMyDocumentViewer, _FlowDocument, pPrintNow); // Возвращаем отчет на место pFlowDocument.Blocks.Add(this); return(true); }
public void OnLoadAsyncCallback(Exception ex) { if (ex != null) { //An error has occurred System.Diagnostics.Debug.WriteLine(ex.StackTrace); MessageBox.Show("无法预览文件" + ex.Message); this.DialogResult = false; } MyDocumentViewer.SetFitMode(DocumentViewer.FitModes.Panel, DocumentViewer.FitModes.None); Busy.IsBusy = false; }
/// <summary>МЕТОД Создаем объект для печати</summary> /// <param name="pMyDocumentViewer">Просмоторщик печати</param> /// <param name="pFlowDocument">Документ, который печатаем</param> /// <param name="pPrintNow">Печатаем сразу</param> public virtual bool MET_CreatePrint(MyDocumentViewer pMyDocumentViewer, FlowDocument pFlowDocument, bool pPrintNow = false) { MyGlo.BrushesOtchet = null; // сбрасываем фон MET_Inizial(PROP_Nodes); // формируем отчет (если надо) FlowDocument _FlowDocument = new FlowDocument { ColumnWidth = 400 }; // новый документ _FlowDocument.Blocks.Add(this); // добавляем в документ наш отчет MET_ImageEmblema(_FlowDocument); // рисуем эмблему MET_PreiwPrint(pMyDocumentViewer, _FlowDocument, pPrintNow); // формируем объект для печати pFlowDocument.Blocks.Add(this); // возвращаем отчет на место return(true); }
public void OnLoadAsyncCallback(Exception ex) { if (ex != null) { //An error has occurred Busy.IsBusy = false; System.Diagnostics.Debug.WriteLine(ex.StackTrace); NotifyWindow lNotifyWIndow = new NotifyWindow("无法预览文件", "等待后台处理,请联系管理员!"); lNotifyWIndow.Show(); //Busy.IsBusy = false; //this.DialogResult = false; } MyDocumentViewer.SetFitMode(DocumentViewer.FitModes.Panel, DocumentViewer.FitModes.None); Busy.IsBusy = false; }
/// <summary>МЕТОД Формируем объект для печати</summary> /// <param name="pMyDocumentViewer">Просмоторщик печати</param> /// <param name="pFlowDocument">Документ, который печатаем</param> /// <param name="pPrintNow">Печатаем сразу</param> protected void MET_PreiwPrint(MyDocumentViewer pMyDocumentViewer, FlowDocument pFlowDocument, bool pPrintNow = false) { try { // ПЕЧАТЬ с помощью фалов в памяти // Подготовиться к сохранению содержимого в памяти MemoryStream _MemoryStream = new MemoryStream(); // Создать пакет, используя статический метод Package.Open() Package _Package = Package.Open(_MemoryStream, FileMode.Create, FileAccess.ReadWrite); // Каждому пакету необходим URI. Использовать синтаксис pack://. // Действительное имя файла неважно Uri _Uri = new Uri("pack://filename.xps"); // Удаляем пакет, если он уже был с таким именем PackageStore.RemovePackage(_Uri); // Добавить пакет PackageStore.AddPackage(_Uri, _Package); // Создать документ XPS на основе этого пакета. (с уровнем сжатия) XpsDocument _XpsDoc = new XpsDocument(_Package, CompressionOption.SuperFast, _Uri.AbsoluteUri); // Формируем файл просмотра печати XpsDocumentWriter _XpsDocWri = XpsDocument.CreateXpsDocumentWriter(_XpsDoc); // Создаем класс просмотра печати с нашими данными UserPrint _MyDocPag = new UserPrint(pFlowDocument, PROP_Nodes.PROP_prnPadding); // Отображаем наш класс _XpsDocWri.Write(_MyDocPag); // Подсоединяем документ к просмоторщику pMyDocumentViewer.Document = _XpsDoc.GetFixedDocumentSequence(); // Устанавливаем просмотр по ширине pMyDocumentViewer.FitToWidth(); // Закрываем файл просмотра печати _XpsDoc.Close(); // Если печатаем сразу, без предварительного просмотра if (pPrintNow) { pMyDocumentViewer.MyPrintNow(); // Чистим пакет и поток (хотя судя по памяти, результат не виден) _Package.Close(); _MemoryStream.Dispose(); } } catch { MessageBox.Show("Ошибка печати", "Ошибка печати"); } }
private void Window_Loaded(object sender, RoutedEventArgs e) { //创建文档视图控件 mDocumentView = new MyDocumentViewer(this.documentViewHost, (PickedItem item, Document doc, ElementId id) => { propertyBrowser.Children.Clear(); if (!id.IsValid()) { return; } //增加一条日志 this.outputCtrl.outputList.Items.Add(id.GetInteger()); //显示选中图元的属性 CreateElementPropertyUI(doc, id); }); // 绑定构件浏览数据 this.projectBrowser.ItemsSource = mDocumentListener.mProjectBrower; }
private void TrunRightButton_Click(object sender, RoutedEventArgs e) { MyDocumentViewer.RotateClockwise(); }