/// <summary> /// Returns the extension of the XpsFileType /// </summary> /// <param name="fileType">The type of extension returned</param> /// <returns></returns> public static String GetExtension(XpsFileType fileType) { string extension; switch (fileType) { case XpsFileType.FixedDocumentSequence: extension = _documentSequenceExtension; break; case XpsFileType.FixedDocument: extension = _fixedDocumentExtension; break; case XpsFileType.FixedPage: extension = _fixedPageExtension; break; case XpsFileType.Relationship: extension = _relationshipExtension; break; case XpsFileType.ImagePng: extension = _imagePngExtension; break; case XpsFileType.ImageTif: extension = _imageTifExtension; break; case XpsFileType.ImageJpg: extension = _imageJpgExtension; break; case XpsFileType.ImageWmp: extension = _imageWmpExtension; break; case XpsFileType.Font: extension = _fontExtension; break; case XpsFileType.ObfuscatedFont: extension = _obfuscatedFontExtension; break; case XpsFileType.ResourceDictionary: extension = _resourceDictionaryExtension; break; case XpsFileType.ColorContext: extension = _colorContextExtension; break; default: throw new ArgumentException("Invalid XpsFileType"); } return(extension); }
/// <summary> /// Here we generate the file name based on the Xps File Type. We also /// create the directory where the file will end up being saved.</summary> /// <param name="fileType">Type of Xps part</param> /// <param name="outputDirectory">Directory where the file will be stored</param> /// <returns>Name of file</returns> public static String GenerateFileName(XpsFileType fileType, String outputDirectory) { string fileName; string path; switch (fileType) { case XpsFileType.FixedDocumentSequence: //There will be only 1 FixedDocumentSequence and it will be at the root path = null; fileName = _documentSequenceName + "." + _documentSequenceExtension; break; case XpsFileType.FixedDocument: path = "Documents/"; fileName = path + _fixedDocumentName + "_" + _fixedDocumentCount + "." + _fixedDocumentExtension; _fixedDocumentCount++; break; case XpsFileType.FixedPage: path = "Pages/"; fileName = path + _fixedPageName + "_" + _fixedPageCount + "." + _fixedPageExtension; _fixedPageCount++; break; case XpsFileType.ImagePng: path = "Resources/Images/"; fileName = path + _imageName + "_" + _imageCount + "." + _imagePngExtension; _imageCount++; break; case XpsFileType.Font: Guid fontguid = Guid.NewGuid(); String fontString = fontguid.ToString(); path = "Resources/Fonts/"; fileName = path + fontString + "." + _obfuscatedFontExtension; break; case XpsFileType.ColorContext: Guid colorContextGuid = Guid.NewGuid(); String colorContextString = colorContextGuid.ToString(); path = "Resources/ColorContexts/"; fileName = path + colorContextString + "." + _colorContextExtension; break; case XpsFileType.ResourceDictionary: Guid resourceDictionaryGuid = Guid.NewGuid(); String resourceDictionaryString = resourceDictionaryGuid.ToString(); path = "Resources/ResourceDictionaries/"; fileName = path + resourceDictionaryString + "." + _resourceDictionaryExtension; break; case XpsFileType.Relationship: fileName = null; path = null; break; default: throw new ArgumentException("File Type is not valid"); } if (path != null) { String fullPath = outputDirectory + "/" + path; if (Directory.Exists(fullPath) != true) { Directory.CreateDirectory(fullPath); } } return(fileName); }// end:GenerateFileName
// ----------------------------- AddType ------------------------------ /// <summary> /// Relates a file extension to a XpsFileType /// in the Content Types file.</summary> /// <param name="fileType"> /// The type of XpsFile to add.</param> /// <param name="extension"> /// The file extension of the file type.</param> public void AddType(XpsFileType fileType, String extension) { //check for duplicates if (_contentTypeTable.Contains(fileType) == false) { _contentTypeTable.Add(fileType); _writer.WriteStartElement(_contentTypeDefault); _writer.WriteAttributeString(_contentTypeExtension, extension); String contentType; switch (fileType) { case XpsFileType.FixedDocumentSequence: contentType = _FixedDocumentSequenceContentType; break; case XpsFileType.FixedDocument: contentType = _FixedDocumentContentType; break; case XpsFileType.FixedPage: contentType = _FixedPageContentType; break; case XpsFileType.Relationship: contentType = _RelationshipsContentType; break; case XpsFileType.ImagePng: contentType = _ImagePngContentType; break; case XpsFileType.ImageTif: contentType = _ImageTifContentType; break; case XpsFileType.ImageJpg: contentType = _ImageJpgContentType; break; case XpsFileType.ImageWmp: contentType = _ImageWmpContentType; break; case XpsFileType.Font: contentType = _fontContentType; break; case XpsFileType.ObfuscatedFont: contentType = _ObfuscatedFontContentType; break; case XpsFileType.ResourceDictionary: contentType = _resourceDictionaryContentType; break; case XpsFileType.ColorContext: contentType = _colorContextContentType; break; default: throw new ArgumentException("Invalid XpsFileType"); } _writer.WriteAttributeString(_contentTypeString, contentType); _writer.WriteEndElement(); } }// end:AddType