#pragma warning restore IDE0069 // Disposable fields should be disposed public BookTemplateEditor() { InitializeComponent(); SCBook = new SCBook(Editor); Disposed += BookTemplateEditor_Disposed; UIUtils.ConfigureRibbonBar(Ribbon); Editor.AddService(typeof(ICommandUIStateManagerService), new BookTemplateICommandUIStateManagerService()); var menuCommandHandler = new BookTemplateMenuCommandHandler(Editor); menuCommandHandler.RegisterMenuCommands(); Editor.RemoveService(typeof(DevExpress.Snap.MenuCommandHandler)); Editor.AddService(typeof(DevExpress.Snap.MenuCommandHandler), menuCommandHandler); //Disable removing styles barRemoveStyle.Visibility = BarItemVisibility.Never; }
private void BookTemplateEditor_Disposed(object sender, EventArgs e) { SCBook?.Dispose(); SCBook = null; }
protected void WriteTable(Document book) { var dataSource = GetDataSource(_Output, DataSource, IgnoreErrors); if (string.IsNullOrWhiteSpace(TemplateFile)) { throw new Exception("Template file is not specified."); } var templateFile = Project.Current.MapPath(TemplateFile); if (!File.Exists(templateFile)) { throw new Exception($"Template file '{TemplateFile}' does not exist."); } MemoryStream documentData; using (var template = SCBook.NewSnapSCBook()) { ExecuteLocked(() => template.Document.LoadDocument(templateFile), LockFiles ? LockObject : null); var mergeOptions = (template.BookServer as SnapDocumentServer).CreateSnapMailMergeExportOptions(); mergeOptions.DataSource = dataSource; mergeOptions.DataMember = null; mergeOptions.CopyTemplateStyles = CopyTemplateStyles; mergeOptions.HeaderFooterLinkToPrevious = !DoNotLinkHeaderFooter; if (NumberedListRestart.HasValue) { mergeOptions.NumberedListRestart = NumberedListRestart.Value; } var snapDocument = template.Document as SnapDocument; snapDocument.Parameters.Clear(); if (Parameters != null) { foreach (DictionaryEntry keyValuePair in Parameters) { var parameter = new Parameter() { Name = Convert.ToString(keyValuePair.Key), Value = keyValuePair.Value, Type = keyValuePair.Value?.GetType() ?? typeof(string) }; snapDocument.Parameters.Add(parameter); } } documentData = new MemoryStream(); snapDocument.SnapMailMerge(mergeOptions, documentData, DocumentFormat.OpenXml); documentData.Seek(0, SeekOrigin.Begin); } ExecuteSynchronized(() => DoWriteBook(book, documentData)); if (OutputBook) { documentData.Seek(0, SeekOrigin.Begin); var outBook = new SCBookContext(); outBook.Document.LoadDocument(documentData, DocumentFormat.OpenXml); WriteObject(outBook); } }