public static bool SaveReport(string Filename, FixedDocumentSequence fqs) { bool result; try { File.Delete(Filename); SerializerProvider serializerProvider = new SerializerProvider(); SerializerDescriptor serializerDescriptor = null; foreach (SerializerDescriptor current in serializerProvider.InstalledSerializers) { if (current.IsLoadable && Filename.EndsWith(current.DefaultFileExtension)) { serializerDescriptor = current; break; } } if (serializerDescriptor != null) { Stream stream = File.Create(Filename); SerializerWriter serializerWriter = serializerProvider.CreateSerializerWriter(serializerDescriptor, stream); serializerWriter.Write(((IDocumentPaginatorSource)fqs).DocumentPaginator, null); stream.Close(); } result = true; } catch (Exception) { result = false; } return(result); }
/// <summary>Handler called when the application starts up.</sumary> private void ApplicationStartup(object sender, StartupEventArgs e) { try { SerializerProvider.RegisterSerializer(SerializerDescriptor.CreateFromFactoryInstance(new XamlSerializerFactory()), false); SerializerProvider.RegisterSerializer(SerializerDescriptor.CreateFromFactoryInstance(new TxtSerializerFactory()), false); SerializerProvider.RegisterSerializer(SerializerDescriptor.CreateFromFactoryInstance(new RtfSerializerFactory()), false); SerializerProvider.RegisterSerializer(SerializerDescriptor.CreateFromFactoryInstance(new HtmlSerializerFactory()), false); } catch (ArgumentException) { } }
protected override void OnExit(ExitEventArgs e) { try { SerializerProvider.UnregisterSerializer(SerializerDescriptor.CreateFromFactoryInstance(new XamlSerializerFactory())); SerializerProvider.UnregisterSerializer(SerializerDescriptor.CreateFromFactoryInstance(new TxtSerializerFactory())); SerializerProvider.UnregisterSerializer(SerializerDescriptor.CreateFromFactoryInstance(new RtfSerializerFactory())); SerializerProvider.UnregisterSerializer(SerializerDescriptor.CreateFromFactoryInstance(new HtmlSerializerFactory())); } catch (ArgumentException) { } base.OnExit(e); }
}// end:SaveDocumentAsFile() // --------------------------- SaveToFile ----------------------------- /// <summary> /// Saves the current document to a specified file.</summary> /// <param name='fileName'> /// The name of file to save to.</param> /// <returns> /// true if the document was saved successfully; otherwise, false /// if there was an error or the user canceled the save.</returns> private bool SaveToFile(string fileName) { if (fileName == null) { throw new ArgumentNullException(nameof(fileName)); } // If the file already exists, delete it (replace). if (File.Exists(fileName)) { File.Delete(fileName); } FlowDocument flowDocument = FDPV.Document as FlowDocument; string fileContent = null; try { // Create a SerializerProvider for accessing plug-in serializers. SerializerProvider serializerProvider = new SerializerProvider(); // Locate the serializer that matches the fileName extension. SerializerDescriptor selectedPlugIn = null; foreach (SerializerDescriptor serializerDescriptor in serializerProvider.InstalledSerializers) { if (serializerDescriptor.IsLoadable && fileName.EndsWith(serializerDescriptor.DefaultFileExtension)) { // The plug-in serializer and fileName extensions match. selectedPlugIn = serializerDescriptor; break; // foreach } } // If a match for a plug-in serializer was found, // use it to output and store the document. if (selectedPlugIn != null) { Stream package = File.Create(fileName); SerializerWriter serializerWriter = serializerProvider.CreateSerializerWriter(selectedPlugIn, package); IDocumentPaginatorSource idoc = flowDocument as IDocumentPaginatorSource; serializerWriter.Write(idoc.DocumentPaginator, null); package.Close(); return(true); } else if (fileName.EndsWith(".xml")) { // Save as a WordXML document. WordXmlSerializer.SaveToFile(fileName, flowDocument.ContentStart, flowDocument.ContentEnd); return(true); } } catch (Exception e) { MessageBox.Show( "Error occurred during a conversion to this file format: " + fileName + "\n" + e.ToString(), this.GetType().Name, MessageBoxButton.OK, MessageBoxImage.Error); return(false); } if (fileContent == null) { MessageBox.Show("A serializer for the given file extension" + "could not be found.\n" + fileName, this.GetType().Name, MessageBoxButton.OK, MessageBoxImage.Error); return(false); } // Output the formatted content to the specified file. try { // Write the file content. StreamWriter writer = new StreamWriter(fileName); writer.WriteLine(fileContent); writer.Close(); } catch (Exception e) { MessageBox.Show("Error occurred during document save: " + fileName + "\n" + e.ToString(), this.GetType().Name, MessageBoxButton.OK, MessageBoxImage.Error); return(false); } return(true); }// end:SaveToFile()
public static IServiceCollection AddSerializerDescriptor(this IServiceCollection services, SerializerDescriptor descriptor) => services.AddSingleton(descriptor ?? throw new ArgumentNullException(nameof(descriptor)));