public static void GenerateCustomXmlPart1Content(CustomXmlPart customXmlPart1) { System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(customXmlPart1.GetStream(System.IO.FileMode.Create), System.Text.Encoding.UTF8); writer.WriteRaw("<?xml version=\"1.0\" encoding=\"utf-8\"?><p:properties xmlns:p=\"http://schemas.microsoft.com/office/2006/metadata/properties\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:pc=\"http://schemas.microsoft.com/office/infopath/2007/PartnerControls\"><documentManagement/></p:properties>"); writer.Flush(); writer.Close(); }
public static void GenerateCustomXmlPart2Content(CustomXmlPart customXmlPart2) { System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(customXmlPart2.GetStream(System.IO.FileMode.Create), System.Text.Encoding.UTF8); writer.WriteRaw("<?xml version=\"1.0\" encoding=\"utf-8\"?><ct:contentTypeSchema ct:_=\"\" ma:_=\"\" ma:contentTypeName=\"Document\" ma:contentTypeID=\"0x0101004B3CC135CC07AD41A19C6A3D7A557156\" ma:contentTypeVersion=\"\" ma:contentTypeDescription=\"Create a new document.\" ma:contentTypeScope=\"\" ma:versionID=\"ed709af8e00f2f37000702baf4108691\" xmlns:ct=\"http://schemas.microsoft.com/office/2006/metadata/contentType\" xmlns:ma=\"http://schemas.microsoft.com/office/2006/metadata/properties/metaAttributes\">\r\n<xsd:schema targetNamespace=\"http://schemas.microsoft.com/office/2006/metadata/properties\" ma:root=\"true\" ma:fieldsID=\"6d238f72868eae9cb05cfc0c92331025\" ns2:_=\"\" ns3:_=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:p=\"http://schemas.microsoft.com/office/2006/metadata/properties\" xmlns:ns2=\"4fc81810-4f98-4e7e-b20e-7b2a690091c4\" xmlns:ns3=\"067d236f-0129-4702-b692-531fc2f871d2\">\r\n<xsd:import namespace=\"4fc81810-4f98-4e7e-b20e-7b2a690091c4\"/>\r\n<xsd:import namespace=\"067d236f-0129-4702-b692-531fc2f871d2\"/>\r\n<xsd:element name=\"properties\">\r\n<xsd:complexType>\r\n<xsd:sequence>\r\n<xsd:element name=\"documentManagement\">\r\n<xsd:complexType>\r\n<xsd:all>\r\n<xsd:element ref=\"ns2:MediaServiceMetadata\" minOccurs=\"0\"/>\r\n<xsd:element ref=\"ns2:MediaServiceFastMetadata\" minOccurs=\"0\"/>\r\n<xsd:element ref=\"ns2:MediaServiceDateTaken\" minOccurs=\"0\"/>\r\n<xsd:element ref=\"ns2:MediaServiceAutoTags\" minOccurs=\"0\"/>\r\n<xsd:element ref=\"ns2:MediaServiceOCR\" minOccurs=\"0\"/>\r\n<xsd:element ref=\"ns2:MediaServiceLocation\" minOccurs=\"0\"/>\r\n<xsd:element ref=\"ns3:SharedWithUsers\" minOccurs=\"0\"/>\r\n<xsd:element ref=\"ns3:SharedWithDetails\" minOccurs=\"0\"/>\r\n</xsd:all>\r\n</xsd:complexType>\r\n</xsd:element>\r\n</xsd:sequence>\r\n</xsd:complexType>\r\n</xsd:element>\r\n</xsd:schema>\r\n<xsd:schema targetNamespace=\"4fc81810-4f98-4e7e-b20e-7b2a690091c4\" elementFormDefault=\"qualified\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:dms=\"http://schemas.microsoft.com/office/2006/documentManagement/types\" xmlns:pc=\"http://schemas.microsoft.com/office/infopath/2007/PartnerControls\">\r\n<xsd:import namespace=\"http://schemas.microsoft.com/office/2006/documentManagement/types\"/>\r\n<xsd:import namespace=\"http://schemas.microsoft.com/office/infopath/2007/PartnerControls\"/>\r\n<xsd:element name=\"MediaServiceMetadata\" ma:index=\"8\" nillable=\"true\" ma:displayName=\"MediaServiceMetadata\" ma:hidden=\"true\" ma:internalName=\"MediaServiceMetadata\" ma:readOnly=\"true\">\r\n<xsd:simpleType>\r\n<xsd:restriction base=\"dms:Note\"/>\r\n</xsd:simpleType>\r\n</xsd:element>\r\n<xsd:element name=\"MediaServiceFastMetadata\" ma:index=\"9\" nillable=\"true\" ma:displayName=\"MediaServiceFastMetadata\" ma:hidden=\"true\" ma:internalName=\"MediaServiceFastMetadata\" ma:readOnly=\"true\">\r\n<xsd:simpleType>\r\n<xsd:restriction base=\"dms:Note\"/>\r\n</xsd:simpleType>\r\n</xsd:element>\r\n<xsd:element name=\"MediaServiceDateTaken\" ma:index=\"10\" nillable=\"true\" ma:displayName=\"MediaServiceDateTaken\" ma:hidden=\"true\" ma:internalName=\"MediaServiceDateTaken\" ma:readOnly=\"true\">\r\n<xsd:simpleType>\r\n<xsd:restriction base=\"dms:Text\"/>\r\n</xsd:simpleType>\r\n</xsd:element>\r\n<xsd:element name=\"MediaServiceAutoTags\" ma:index=\"11\" nillable=\"true\" ma:displayName=\"Tags\" ma:internalName=\"MediaServiceAutoTags\" ma:readOnly=\"true\">\r\n<xsd:simpleType>\r\n<xsd:restriction base=\"dms:Text\"/>\r\n</xsd:simpleType>\r\n</xsd:element>\r\n<xsd:element name=\"MediaServiceOCR\" ma:index=\"12\" nillable=\"true\" ma:displayName=\"Extracted Text\" ma:internalName=\"MediaServiceOCR\" ma:readOnly=\"true\">\r\n<xsd:simpleType>\r\n<xsd:restriction base=\"dms:Note\">\r\n<xsd:maxLength value=\"255\"/>\r\n</xsd:restriction>\r\n</xsd:simpleType>\r\n</xsd:element>\r\n<xsd:element name=\"MediaServiceLocation\" ma:index=\"13\" nillable=\"true\" ma:displayName=\"Location\" ma:internalName=\"MediaServiceLocation\" ma:readOnly=\"true\">\r\n<xsd:simpleType>\r\n<xsd:restriction base=\"dms:Text\"/>\r\n</xsd:simpleType>\r\n</xsd:element>\r\n</xsd:schema>\r\n<xsd:schema targetNamespace=\"067d236f-0129-4702-b692-531fc2f871d2\" elementFormDefault=\"qualified\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:dms=\"http://schemas.microsoft.com/office/2006/documentManagement/types\" xmlns:pc=\"http://schemas.microsoft.com/office/infopath/2007/PartnerControls\">\r\n<xsd:import namespace=\"http://schemas.microsoft.com/office/2006/documentManagement/types\"/>\r\n<xsd:import namespace=\"http://schemas.microsoft.com/office/infopath/2007/PartnerControls\"/>\r\n<xsd:element name=\"SharedWithUsers\" ma:index=\"14\" nillable=\"true\" ma:displayName=\"Shared With\" ma:internalName=\"SharedWithUsers\" ma:readOnly=\"true\">\r\n<xsd:complexType>\r\n<xsd:complexContent>\r\n<xsd:extension base=\"dms:UserMulti\">\r\n<xsd:sequence>\r\n<xsd:element name=\"UserInfo\" minOccurs=\"0\" maxOccurs=\"unbounded\">\r\n<xsd:complexType>\r\n<xsd:sequence>\r\n<xsd:element name=\"DisplayName\" type=\"xsd:string\" minOccurs=\"0\"/>\r\n<xsd:element name=\"AccountId\" type=\"dms:UserId\" minOccurs=\"0\" nillable=\"true\"/>\r\n<xsd:element name=\"AccountType\" type=\"xsd:string\" minOccurs=\"0\"/>\r\n</xsd:sequence>\r\n</xsd:complexType>\r\n</xsd:element>\r\n</xsd:sequence>\r\n</xsd:extension>\r\n</xsd:complexContent>\r\n</xsd:complexType>\r\n</xsd:element>\r\n<xsd:element name=\"SharedWithDetails\" ma:index=\"15\" nillable=\"true\" ma:displayName=\"Shared With Details\" ma:internalName=\"SharedWithDetails\" ma:readOnly=\"true\">\r\n<xsd:simpleType>\r\n<xsd:restriction base=\"dms:Note\">\r\n<xsd:maxLength value=\"255\"/>\r\n</xsd:restriction>\r\n</xsd:simpleType>\r\n</xsd:element>\r\n</xsd:schema>\r\n<xsd:schema targetNamespace=\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" blockDefault=\"#all\" xmlns=\"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dcterms=\"http://purl.org/dc/terms/\" xmlns:odoc=\"http://schemas.microsoft.com/internal/obd\">\r\n<xsd:import namespace=\"http://purl.org/dc/elements/1.1/\" schemaLocation=\"http://dublincore.org/schemas/xmls/qdc/2003/04/02/dc.xsd\"/>\r\n<xsd:import namespace=\"http://purl.org/dc/terms/\" schemaLocation=\"http://dublincore.org/schemas/xmls/qdc/2003/04/02/dcterms.xsd\"/>\r\n<xsd:element name=\"coreProperties\" type=\"CT_coreProperties\"/>\r\n<xsd:complexType name=\"CT_coreProperties\">\r\n<xsd:all>\r\n<xsd:element ref=\"dc:creator\" minOccurs=\"0\" maxOccurs=\"1\"/>\r\n<xsd:element ref=\"dcterms:created\" minOccurs=\"0\" maxOccurs=\"1\"/>\r\n<xsd:element ref=\"dc:identifier\" minOccurs=\"0\" maxOccurs=\"1\"/>\r\n<xsd:element name=\"contentType\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xsd:string\" ma:index=\"0\" ma:displayName=\"Content Type\"/>\r\n<xsd:element ref=\"dc:title\" minOccurs=\"0\" maxOccurs=\"1\" ma:index=\"4\" ma:displayName=\"Title\"/>\r\n<xsd:element ref=\"dc:subject\" minOccurs=\"0\" maxOccurs=\"1\"/>\r\n<xsd:element ref=\"dc:description\" minOccurs=\"0\" maxOccurs=\"1\"/>\r\n<xsd:element name=\"keywords\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xsd:string\"/>\r\n<xsd:element ref=\"dc:language\" minOccurs=\"0\" maxOccurs=\"1\"/>\r\n<xsd:element name=\"category\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xsd:string\"/>\r\n<xsd:element name=\"version\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xsd:string\"/>\r\n<xsd:element name=\"revision\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xsd:string\">\r\n<xsd:annotation>\r\n<xsd:documentation>\r\n This value indicates the number of saves or revisions. The application is responsible for updating this value after each revision.\r\n </xsd:documentation>\r\n</xsd:annotation>\r\n</xsd:element>\r\n<xsd:element name=\"lastModifiedBy\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xsd:string\"/>\r\n<xsd:element ref=\"dcterms:modified\" minOccurs=\"0\" maxOccurs=\"1\"/>\r\n<xsd:element name=\"contentStatus\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xsd:string\"/>\r\n</xsd:all>\r\n</xsd:complexType>\r\n</xsd:schema>\r\n<xs:schema targetNamespace=\"http://schemas.microsoft.com/office/infopath/2007/PartnerControls\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" xmlns:pc=\"http://schemas.microsoft.com/office/infopath/2007/PartnerControls\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\r\n<xs:element name=\"Person\">\r\n<xs:complexType>\r\n<xs:sequence>\r\n<xs:element ref=\"pc:DisplayName\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:AccountId\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:AccountType\" minOccurs=\"0\"></xs:element>\r\n</xs:sequence>\r\n</xs:complexType>\r\n</xs:element>\r\n<xs:element name=\"DisplayName\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"AccountId\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"AccountType\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"BDCAssociatedEntity\">\r\n<xs:complexType>\r\n<xs:sequence>\r\n<xs:element ref=\"pc:BDCEntity\" minOccurs=\"0\" maxOccurs=\"unbounded\"></xs:element>\r\n</xs:sequence>\r\n<xs:attribute ref=\"pc:EntityNamespace\"></xs:attribute>\r\n<xs:attribute ref=\"pc:EntityName\"></xs:attribute>\r\n<xs:attribute ref=\"pc:SystemInstanceName\"></xs:attribute>\r\n<xs:attribute ref=\"pc:AssociationName\"></xs:attribute>\r\n</xs:complexType>\r\n</xs:element>\r\n<xs:attribute name=\"EntityNamespace\" type=\"xs:string\"></xs:attribute>\r\n<xs:attribute name=\"EntityName\" type=\"xs:string\"></xs:attribute>\r\n<xs:attribute name=\"SystemInstanceName\" type=\"xs:string\"></xs:attribute>\r\n<xs:attribute name=\"AssociationName\" type=\"xs:string\"></xs:attribute>\r\n<xs:element name=\"BDCEntity\">\r\n<xs:complexType>\r\n<xs:sequence>\r\n<xs:element ref=\"pc:EntityDisplayName\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:EntityInstanceReference\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:EntityId1\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:EntityId2\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:EntityId3\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:EntityId4\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:EntityId5\" minOccurs=\"0\"></xs:element>\r\n</xs:sequence>\r\n</xs:complexType>\r\n</xs:element>\r\n<xs:element name=\"EntityDisplayName\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"EntityInstanceReference\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"EntityId1\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"EntityId2\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"EntityId3\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"EntityId4\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"EntityId5\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"Terms\">\r\n<xs:complexType>\r\n<xs:sequence>\r\n<xs:element ref=\"pc:TermInfo\" minOccurs=\"0\" maxOccurs=\"unbounded\"></xs:element>\r\n</xs:sequence>\r\n</xs:complexType>\r\n</xs:element>\r\n<xs:element name=\"TermInfo\">\r\n<xs:complexType>\r\n<xs:sequence>\r\n<xs:element ref=\"pc:TermName\" minOccurs=\"0\"></xs:element>\r\n<xs:element ref=\"pc:TermId\" minOccurs=\"0\"></xs:element>\r\n</xs:sequence>\r\n</xs:complexType>\r\n</xs:element>\r\n<xs:element name=\"TermName\" type=\"xs:string\"></xs:element>\r\n<xs:element name=\"TermId\" type=\"xs:string\"></xs:element>\r\n</xs:schema>\r\n</ct:contentTypeSchema>"); writer.Flush(); writer.Close(); }
public static void GenerateCustomXmlPart3Content(CustomXmlPart customXmlPart3) { System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(customXmlPart3.GetStream(System.IO.FileMode.Create), System.Text.Encoding.UTF8); writer.WriteRaw("<?mso-contentType?><FormTemplates xmlns=\"http://schemas.microsoft.com/sharepoint/v3/contenttype/forms\"><Display>DocumentLibraryForm</Display><Edit>DocumentLibraryForm</Edit><New>DocumentLibraryForm</New></FormTemplates>"); writer.Flush(); writer.Close(); }
/// <summary> /// Gets the first element from custom XML part. /// </summary> /// <param name="customXmlPart">The custom XML part.</param> /// <param name="elementName">Name of the element.</param> /// <returns></returns> public XElement GetFirstElementFromCustomXmlPart(CustomXmlPart customXmlPart, string elementName) { if (customXmlPart == null) { throw new ArgumentNullException("customXmlPart"); } if (string.IsNullOrEmpty(elementName)) { throw new ArgumentNullException("elementName"); } XDocument customPartDoc = null; using (XmlReader reader = XmlReader.Create(customXmlPart.GetStream(FileMode.Open, FileAccess.Read))) { customPartDoc = XDocument.Load(reader); } XElement element = null; if (customPartDoc != null) { XName elementXName = XName.Get(elementName, this.namespaceUri); element = (from e in customPartDoc.Descendants(elementXName) select e).FirstOrDefault(); } return(element); }
/// <summary> /// Removes the content controls and keep contents. /// </summary> /// <param name="document">The document.</param> public void RemoveContentControlsAndKeepContents(Document document) { if (document == null) { throw new ArgumentNullException("document"); } CustomXmlPartCore customXmlPartCore = new CustomXmlPartCore(this.NamespaceUri); CustomXmlPart customXmlPart = customXmlPartCore.GetCustomXmlPart(document.MainDocumentPart); XmlDocument customPartDoc = new XmlDocument(); if (customXmlPart != null) { using (XmlReader reader = XmlReader.Create(customXmlPart.GetStream(FileMode.Open, FileAccess.Read))) { customPartDoc.Load(reader); } } RemoveContentControlsAndKeepContents(document.Body, customPartDoc.DocumentElement); foreach (OpenXmlCompositeElement headerPart in document.MainDocumentPart.HeaderParts.SelectMany(hp => hp.RootElement)) { RemoveContentControlsAndKeepContents(headerPart, customPartDoc.DocumentElement); } document.Save(); }
/// <summary> /// update the treeview with the customxmlpart nodes /// </summary> /// <param name="c"></param> public void DisplayBaseNodes(CustomXmlPart c) { treeView1.Nodes.Clear(); nodeNames.Clear(); XmlDocument xDoc = new XmlDocument(); xDoc.Load(c.GetStream()); PopulateBaseNodes(xDoc); }
/// <summary> /// 向制定的部件中写数据 /// </summary> /// <param name="xmlPart"></param> /// <param name="xdoc"></param> public static void WriteXml(this CustomXmlPart xmlPart, XDocument xdoc) { Stream stream = xmlPart.GetStream(FileMode.Create, FileAccess.Write); var writer = new XmlTextWriter(stream, Encoding.UTF8); xdoc.Save(writer); writer.Flush(); writer.Close(); stream.Close(); }
/// <summary> /// 获取用户自定义部件XML数据 /// </summary> /// <param name="xmlPart"></param> /// <returns></returns> public static XDocument GetXDocument(this CustomXmlPart xmlPart) { using (Stream stream = xmlPart.GetStream(FileMode.Open, FileAccess.Read)) { using (XmlReader xReader = XmlReader.Create(stream, new XmlReaderSettings())) { XDocument xDocument = XDocument.Load(xReader); return(xDocument); } } }
/// <summary> /// Replaces the custom XML in the main document mainPart. /// </summary> /// <param name="mainPart">The main document part.</param> /// <param name="customXml">The custom XML.</param> public static void ReplaceCustomXml(this MainDocumentPart mainPart, XElement customXml) { if (customXml != null) { mainPart.RemoveCustomXmlParts(); CustomXmlPart customXmlPart = mainPart.AddNewPart <CustomXmlPart>(); using (Stream stream = customXmlPart.GetStream(FileMode.Create, FileAccess.ReadWrite)) using (XmlWriter writer = XmlWriter.Create(stream)) { customXml.Save(writer); } } }
public void CanCreateLargeCustomXmlParts(int size) { int desiredStreamLength = size * 1024 * 1024; string path = $"Document_{size:D2}MB.docm"; // Create a macro-enabled Word document with a custom XML part having // at least the desired size in MB. CreateMacroEnabledWordDocument(path, size); // Assert that the document does have a custom XML part with at least // the desired size. using WordprocessingDocument wordDocument = WordprocessingDocument.Open(path, false); CustomXmlPart customXmlPart = wordDocument.MainDocumentPart.CustomXmlParts.First(); using Stream stream = customXmlPart.GetStream(FileMode.Open, FileAccess.Read); Assert.True(stream.Length > desiredStreamLength); }
protected void ReplaceCustomXML(string fileName, string customXML) { using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(fileName, true)) { MainDocumentPart mainPart = wordDoc.MainDocumentPart; mainPart.DeleteParts <CustomXmlPart>(mainPart.CustomXmlParts); //Add a new customXML part and then add content CustomXmlPart customXmlPart = mainPart.AddNewPart <CustomXmlPart>(); //copy the XML into the new part... using (StreamWriter ts = new StreamWriter(customXmlPart.GetStream())) ts.Write(customXML); } }
static Uri CreateCustomXML(WordprocessingDocument document, XElement customXML, out string guid) { CustomXmlPart XMLPart = document.MainDocumentPart.AddCustomXmlPart(CustomXmlPartType.CustomXml); StreamWriter sw = new StreamWriter(XMLPart.GetStream(FileMode.Create, FileAccess.ReadWrite)); sw.Write(customXML.ToString()); sw.Flush(); sw.Close(); guid = "{" + Guid.NewGuid().ToString().ToUpper() + "}"; CustomXmlPropertiesPart propPart = XMLPart.AddNewPart <CustomXmlPropertiesPart>(); propPart.DataStoreItem = new DataStoreItem(new SchemaReferences()) { ItemId = guid }; return(XMLPart.Uri); }
/// <summary> /// Writes the element to custom XML part. /// </summary> /// <param name="customXmlPart">The custom XML part.</param> /// <param name="rootElement">The root element.</param> public void WriteElementToCustomXmlPart(CustomXmlPart customXmlPart, XElement rootElement) { if (customXmlPart == null) { throw new ArgumentNullException("customXmlPart"); } if (rootElement == null) { throw new ArgumentNullException("rootElement"); } using (XmlWriter writer = XmlWriter.Create(customXmlPart.GetStream(FileMode.Create, FileAccess.Write))) { rootElement.WriteTo(writer); writer.Flush(); } }
/// <summary> /// Refreshes the document command bar button_ click. /// </summary> /// <param name="cmdBarbutton">The CMD barbutton.</param> /// <param name="cancel">if set to <c>true</c> [cancel].</param> private void RefreshDocumentCommandBarButton_Click(CommandBarButton cmdBarbutton, ref bool cancel) { app.ScreenUpdating = false; Microsoft.Office.Interop.Word.Document doc = app.ActiveDocument; // Get the active documents as stream of bytes byte[] input = doc.GetPackageStream(); // Generate document on the Server. AddInService can be a proxy to service, however here it's direct call byte[] output = AddInService.GenerateDocument(input); if (output != null) { using (MemoryStream ms = new MemoryStream()) { ms.Write(output, 0, output.Length); using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(ms, true)) { XDocument xDoc = OPCHelper.OpcToFlatOpc(wordDocument.Package); string openxml = xDoc.ToString(); doc.Range().InsertXML(openxml); // Add CustomXmlPart CustomXmlPartCore customXmlPartCore = new CustomXmlPartCore(DocumentGenerationInfo.NamespaceUri); CustomXmlPart customPart = customXmlPartCore.GetCustomXmlPart(wordDocument.MainDocumentPart); if (customPart != null) { XDocument customPartDoc = null; using (XmlReader reader = XmlReader.Create(customPart.GetStream(FileMode.Open, FileAccess.Read))) { customPartDoc = XDocument.Load(reader); } doc.StoreCustomXmlPart(customPartDoc); } } } } app.ScreenUpdating = true; }
public void Extract() { CheckIfTypedSettingIsNull(); using (WordprocessingDocument document = WordprocessingDocument.Open(TypedSetting.DocxFilePath, true)) { string dataStoreItemId = TypedSetting.DataStoreItemId; CustomXmlPart xmlPart = GetCustomXmlPart(document, dataStoreItemId); if (xmlPart != null) { using (StreamReader stream = new StreamReader(xmlPart.GetStream(FileMode.Open, FileAccess.Read))) { XDocument doc = XDocument.Load(stream); doc.Save(TypedSetting.CustomXmlFilePath); } } } }
public virtual T GetCustomXmlPart <T>() { using (MemoryStream memoryStream = new MemoryStream(_file)) { using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(memoryStream, false)) { MainDocumentPart mainPart = wordDoc.MainDocumentPart; CustomXmlPart myXmlPart = null; foreach (var xmlPart in mainPart.CustomXmlParts) { var exists = false; using (XmlTextReader xReader = new XmlTextReader(xmlPart.GetStream(FileMode.Open, FileAccess.Read))) { xReader.MoveToContent(); exists = xReader.NamespaceURI.Equals(AtlasNamespace, StringComparison.InvariantCultureIgnoreCase); } if (exists) { myXmlPart = xmlPart; break; } } if (myXmlPart != null) { var xmlReader = XmlReader.Create(myXmlPart.GetStream(FileMode.Open, FileAccess.Read)); XmlSerializer serializer = new XmlSerializer(typeof(T), AtlasNamespace); var metadata = (T)serializer.Deserialize(xmlReader); return(metadata); } } } return(default(T)); }
private XDocument GetXDocument(CustomXmlPart customXmlPart) { XDocument document = XDocument.Load(customXmlPart.GetStream()); return(document); }
public static void InsertCustomXmlForPpt(string pptFileName, string customXML) { using (PresentationDocument openXmlDoc = PresentationDocument.Open(pptFileName, true)) { // Create a new custom XML part int count = openXmlDoc.PresentationPart.Parts.Count(); string customXmlId = string.Format("rId{0}", count + 1); CustomXmlPart customXmlPart = openXmlDoc.PresentationPart.AddCustomXmlPart(CustomXmlPartType.CustomXml, customXmlId); using (Stream outputStream = customXmlPart.GetStream()) { using (StreamWriter ts = new StreamWriter(outputStream)) { ts.Write(customXML); } } // Add datastore so that the xml will persist after the document is modified count = customXmlPart.Parts.Count(); CustomXmlPropertiesPart customXmlPropertiesPart = customXmlPart.AddNewPart <CustomXmlPropertiesPart>(string.Format("rId{0}", count + 1)); DataStoreItem dataStoreItem = new DataStoreItem() { ItemId = string.Format("{0}", Guid.NewGuid()) }; dataStoreItem.AddNamespaceDeclaration("ds", "http://schemas.openxmlformats.org/officeDocument/2006/customXml"); SchemaReferences schemaReferences = new SchemaReferences(); SchemaReference schemaReference = new SchemaReference() { Uri = "http://www.w3.org/2001/XMLSchema" }; schemaReferences.Append(schemaReference); dataStoreItem.Append(schemaReferences); customXmlPropertiesPart.DataStoreItem = dataStoreItem; // Add the xml to the customer data section of the document CustomerData customerData = new CustomerData() { Id = customXmlId }; if (openXmlDoc.PresentationPart.Presentation.CustomerDataList != null) { // Sequence matters: http://www.schemacentral.com/sc/ooxml/e-p_custDataLst-1.html if (openXmlDoc.PresentationPart.Presentation.CustomerDataList.Count() > 0) { openXmlDoc.PresentationPart.Presentation.CustomerDataList.InsertBefore(customerData, openXmlDoc.PresentationPart.Presentation.CustomerDataList.FirstChild); } else { openXmlDoc.PresentationPart.Presentation.CustomerDataList.Append(customerData); } } else { CustomerDataList customerDataList = new CustomerDataList(); customerDataList.Append(customerData); // Sequence matters: http://www.schemacentral.com/sc/ooxml/e-p_presentation.html if (openXmlDoc.PresentationPart.Presentation.Kinsoku != null) { openXmlDoc.PresentationPart.Presentation.InsertBefore(customerDataList, openXmlDoc.PresentationPart.Presentation.Kinsoku); } else if (openXmlDoc.PresentationPart.Presentation.DefaultTextStyle != null) { openXmlDoc.PresentationPart.Presentation.InsertBefore(customerDataList, openXmlDoc.PresentationPart.Presentation.DefaultTextStyle); } else if (openXmlDoc.PresentationPart.Presentation.ModificationVerifier != null) { openXmlDoc.PresentationPart.Presentation.InsertBefore(customerDataList, openXmlDoc.PresentationPart.Presentation.ModificationVerifier); } else if (openXmlDoc.PresentationPart.Presentation.PresentationExtensionList != null) { openXmlDoc.PresentationPart.Presentation.InsertBefore(customerDataList, openXmlDoc.PresentationPart.Presentation.PresentationExtensionList); } else { openXmlDoc.PresentationPart.Presentation.Append(customerDataList); } } } }