public void Initialize(PluginConfigurationData configuration, PluginEnvironment environment) { // Initialize the activity data by deserializing it from an existing copy of configuration information. _activityData = configuration.GetMetadata <MailMergeActivityData>(); DynamicLocalPrintQueueDefinition definition = configuration.PrintQueues.SelectedPrintQueues.First() as DynamicLocalPrintQueueDefinition; IPrinterInfo printDevice = ConfigurationServices.AssetInventory.GetAsset(definition.AssetId) as IPrinterInfo; PrintDriverInfo printDriver = ConfigurationServices.AssetInventory.AsInternal().GetPrintDrivers().First(n => n.PrintDriverId == definition.PrintDriverId); _localPrintQueueInfo = new DynamicLocalPrintQueueInfo(printDevice, printDriver, definition.PrinterPort, definition.PrintDriverConfiguration); PopulateMailMergeUi(); }
public PluginExecutionResult Execute(PluginExecutionData executionData) { if (!_setupDone) { AddOfficeRegistryEntries(); _setupDone = true; } _mailMergeData = executionData.GetMetadata <MailMergeActivityData>(); _printQueueInfoCollection = executionData.PrintQueues; _userName = executionData.Credential.UserName; _sessionId = executionData.SessionId; _tempDataSourceFileName = Path.Combine(Path.GetTempPath(), $"{_userName}_{Guid.NewGuid()}_tempDataSourceFile.doc"); //install the local printer or remote print queue // Set up the list of print devices if (_printQueueInfoCollection.Count == 0) { return(new PluginExecutionResult(PluginResult.Skipped)); } PrintQueueInfo printQueueInfo = _printQueueInfoCollection.First(); PrintQueue printQueue = PrintQueueController.Connect(printQueueInfo); // Log the device/server that was used for this job, if one was specified LogDevice(executionData, printQueueInfo); if (_mailMergeData.PrintJobSeparator) { PrintTag(printQueue, executionData); } _defaultPrintQueue = printQueue.FullName; //generate the mail merge doc and print it to default print queue try { ExecutionServices.CriticalSection.Run(new Framework.Synchronization.LocalLockToken(printQueueInfo.AssociatedAssetId, new TimeSpan(0, 0, 30), new TimeSpan(0, 5, 0)), PrintMailMerge); } catch (Exception ex) { return(new PluginExecutionResult(PluginResult.Failed, ex.Message)); } return(new PluginExecutionResult(PluginResult.Passed)); }
public void Initialize(PluginEnvironment environment) { // Initialize the activity data with a default value _activityData = new MailMergeActivityData(); PopulateMailMergeUi(); }